尾随闭包和速记语法
Swift有一些技巧,使闭合更容易阅读。以下是一些过滤数组的代码,仅包含以“T”开头的名称:
let team = ["Gloria", "Suzanne", "Tiffany", "Tasha"]
let onlyT = team.filter({ (name: String) -> Bool in
return name.hasPrefix("T")
})
print(onlyT)
您立即可以看到闭包的正文只有一行代码,因此我们可以删除return:
let onlyT = team.filter({ (name: String) -> Bool in
name.hasPrefix("T")
})
filter()必须给定一个接受其数组中一个项的函数,如果它应该在返回的数组中,则返回true。
由于我们传递的函数必须这样做,所以我们不需要在闭包中指定类型。因此,我们可以将代码重写为:
let onlyT = team.filter({ name in
name.hasPrefix("T")
})
我们可以更进一步使用称为尾随闭包语法的特殊语法,如下所示:
let onlyT = team.filter { name in
name.hasPrefix("T")
}
最后,Swift可以为我们提供简短的参数名称,这样我们甚至不再写name in,而是依赖为我们提供的特别命名值:$0:
let onlyT = team.filter {
$0.hasPrefix("T")
}
511

被折叠的 条评论
为什么被折叠?



