相关疑难解决方法(0)

有没有办法在调用SequenceType.forEach时引用实例函数?

考虑类型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)

ios swift

4
推荐指数
1
解决办法
467
查看次数

标签 统计

ios ×1

swift ×1