考虑类型Foo:
class Foo {
var isBaz: Bool {
return false
}
func bar() {
print("some boring print")
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们说我想遍历一个类实例集合并在每个类实例上调用一些函数:
let someFoos: [Foo] = [Foo(), Foo(), Foo()]
someFoos.forEach { $0.bar() }
Run Code Online (Sandbox Code Playgroud)
这种语法非常紧凑,但感觉有点尴尬.此外,它无法在任何地方使用.例如,在if声明条件中:
if someFoos.contains { $0.isBaz } {
// compiler error: statement cannot begin with a closure expression
}
if someFoos.contains($0.isBaz) {
// compiler error: anonymous closure argument not contained in a closure
}
if someFoos.contains({ $0.isBaz }) {
// this is correct, but requires extra …Run Code Online (Sandbox Code Playgroud)