变量
变量修辞关键词
- strong(默认)
- weak(弱引用,计数不会+1),必须为可选类型变量,一是可选? !,二是变量var
String格式
- "\(h):\(m):\(s)"
- String(h)+String(m)+String(s)
- String(format:"%2d:%2d:%2d",arguments:[h:m:s])
数组 可以不同类型,自动推导为NSObject
结构体(数组) 值类型
类类型 引用类型
断言
assert(i>0, "error")
assert(i>0)
函数
一般形式
(parameters) -> returntype {
statements
}
没有返回值的三种写法
- 直接省略
- -> Void
- -> ()
简写
闭包
闭包一般形式
{ (parameters) -> returntype in
statements
}
简写
// 返回值被推断为Bool,可以省略 -> Bool 和 参数括号
{ s1, s2 in return s1 > s2}
// 单行表达式,可以省略return
{ s1, s2 in s1 > s2}
// 省略参数,直接用$0 $1 $2代替
{ $0 > $1 }
// 没有参数和返回值
{ print("") }
/*
总结:闭包返回类型可通过statements推断出来就可以省略;
返回类型省略,参数列表()也可以省略;
参数列表页可以省略,通过$0 $1 ... 代替
*/
尾随闭包
将一个很长的闭包表达式作为最后一个参数传递给函数
// 正常写法
func fun1(bb: 闭包)
// 尾随闭包
func fun1(){ 闭包 }
func fun1{ 闭包 }
捕获
闭包是引用类型
枚举
可以有方法
enum compass{
case North
case South
case East
case West
}
或
enum compass{
case North, case South, case East, case West
}
类
存储属性
计算属性
计算属性不会存储值,需要在计算的时候复制给另外属性来存储
// set 和 get
// SwiftProperty是计算属性,不能存储值,SwiftPropertyStore存储值
// set包含newValue参数
var SwiftProperty : String
{
set{
self.SwiftPropertyStore = newValue
}
get{
return self.SwiftPropertyStore
}
}
var SwiftPropertyStore : String!
// willset 和 didget
//
//
var SwiftProperty : String
{
willSet{
print("\(newValue)")
}
didSet{
print("\(oldValue)")
}
}