Swift中关键字比较多,大部份刚开始学的时候看到这么多有点慌,初步整理一份,持续更新。
Like an if statement, guard executes statements based on a Boolean value of an expression. Unlike an if statement, guard
statements only run if the conditions are not met. You can think of guard more like anAssert , but rather than crashing, you can gracefully exit.和if语句类似,也是根据bool值来判断,但guard只有在条件不满足的时候触发。你也可以把它看作一种异常处理。
问号是optional的缩写。Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。
一旦声明为Optional的,如果不显式的赋值就会有个默认值nil。
- !
感叹号表示“所修饰的这个符号里面的值一定是非nil的。
swift中有个双问号操作符(??),可以用来快速对nil进行条件判断, 对于不期望某个optional值为nil时func返回nil 或者 因为其值为nil而停止了后续业务的情况下,我们可以用"??"在optionalValue为nil时做赋值保险操作(“??”操作后返回值为非optional)
用法:
newValue = optionalValue ?? value
若optionalValue非nil时,newValue的值为optionalValue的值,若optionalValue为nil时,newValue的值为value的值
- private/open/public/fileprivate/internal
-- http://www.hangge.com/blog/cache/detail_524.html
上面几个关键字是swift的访问控制符
private 访问级别所修饰的属性或者方法只能在当前类里访问。
fileprivate 访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问。
internal 访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
如果是App代码,也是在整个App代码,也是在整个App内部可以访问。
public 可以被任何人访问。但其他module中不可以被override和继承,而在module内可以被override和继承。
open 可以被任何人使用,包括override和继承。
let 代表修饰的是常量,不可变。
var 修饰的是变量,可变。
和oc类似,在现有类和结构体的类型基础上,扩展新的功能。
- _
-- http://blog.csdn.net/twlkyao/article/details/30536397
-- http://www.cocoachina.com/industry/20140630/8982.html
下划线的功能有很多,主要是用来占位,但具体占位的作用可以参考上面的链接。
主要用来 声明外部函数名,
- ...
--
和省略号的作用是一样的,代表后面还有很多,比如多个参数。又或者代表某个范围1...5
- $
--
为了能够在实例方法中修改属性值,可以在方法定义前添加关键字mutating
如果我们希望一个函数可以修改它的参数变量的值,我们可以使用 inout 关键词。这个相当于编程语言概念中所谓的传址调用。
使用@objc修饰后的类型,可以直接供 Objective-C 调用
- #available
-- http://swift.gg/2016/04/13/swift-qa-2016-04-13/
对于函数,类,协议等,可以使用@available声明这些类型的生命周期依赖于特定的平台和操作系统版本。而#available用在判断语句中(if, guard, while等),在不同的平台上做不同的逻辑。
网友评论