在Swift里,对于函数而言,一个标准的声明是这样的
func func-name(arg-list) -> ret-type {
statment
}
在参数的省略方面,省略就以为这没有参数,这个没有问题。但是如果我们把末尾的返回值的类型省略了会怎样?也就是像下面这个
func testIntFunc() {
print(5)
}
在解释之前我们应该先知道,在Swift里()和Void是等价的。省略返回值类型也就相当于下面这两种写法
func testIntFunc() -> () { //返回()型,也就是不返回任何类型
print(5)
}
func testIntFunc() -> Void { //返回Void和()等价,也是不返回任何类型
print(5)
}
由此可知,在函数声明里省略返回值类型就是不返回任何值
那么闭包呢?在闭包里返回值的类型也可以被省略,但是闭包里省略返回值类型不完全等于不返回值。
在闭包里省略返回值类型,如果只有一行代码,根据这一行代码返回值的情况来决定返回值类型。如果多行则相当于不返回值。请看例子
let testInt = { () in
return 5
}
let testDouble = { () in
return 5.0
}
let testString = { () in
return "testString"
}
运行结果如下
5
5.0
testString