您的位置:首页 > 移动开发 > Swift

swift学习记录(swift的类型推断)

2015-06-08 11:07 417 查看
今天听斯坦福大学Paul Hegarty 教授关于IOS开发的公开课,其中强调了swift的类型推断 让我明白了swift语法中一些奇怪的东西:

1、赋值中的类型推断:

let value = 1

这是有类型推断是很容易理解的。

2、闭包的类型推断:

func hasAnyMatches(list:Array<Int>,condition:Int -> Bool)
->Bool {

for item in list {

if condition(item) {

return true

}

}

return false

}

func lessThanTen(number:Int) -> Bool {

return number < 10

}

var numbers = [20,19,2,6]

hasAnyMatches(numbers,lessThanTen)
我们知道lessThanTen可以在调用hasAnyMatches时直接写成一个闭包,这样就不用单独申明函数。也就是写成hasAnyMatches(numbers,{
(number:Int)
-> Bool in return number < 10

})

但是考虑到swift是有良好的类型推断功能,所以实际上可以删除不必要的类型,写成

hasAnyMatches(numbers,{

number in return number < 10

})

因为swift可以推断出闭包的返回类型,所以其实不需要return

hasAnyMatches(numbers,{
number in number
< 10

})
同时,参数是可以不申明的,所以

hasAnyMatches(numbers,{
$0 < 10

})
如果闭包是函数的最后一个参数,还可以把闭包拿出来

hasAnyMatches(numbers){$0
< 10}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: