奇怪的Swift错误:'过滤器'不可用

时间:2017-10-08 15:18:56

标签: swift compiler-errors

我正在研究exercise.io提供的练习。其中一个是Raindrops,提供了一个号码,传递“Pling”,“Plang”,“Plong”,或者数字取决于3,5或7是否是数字的因素。

我已经有了一个简单的工作解决方案,但我想迭代问题并尝试不同的事情。以下示例适用于Swift游乐场,但在练习项目中“过滤器'不可用”神秘失败。

class Raindrops {
    let number:   Int
    let notes:  [ Int: String ] =  [ 3: "Pling"
                                   , 5: "Plang"
                                   , 7: "Plong" ]

    init( _ number: Int ) {
        self.number = number
    }

    var sounds: String {
        return notes.filter{ number % $0.key == 0 }  // (!) 'filter' is unavailable
                   .keys.sorted().map{ notes[ $0 ]! }
                       .joined( separator: "" )
    }
}

在项目中,该类由诸如此类的函数调用。 (编辑因为先前的测试会因为写入而失败。)

func test105() {
    XCTAssertEqual("PlingPlangPlong", Raindrops(105).sounds)
}

在我的Swift游乐场中,没有发生此错误,我有这个。

class Raindrops {
    let number:   Int
    let notes:  [ Int: String ] =  [ 3: "Pling"
                                   , 5: "Plang"
                                   , 7: "Plong" ]

    init( _ number: Int ) {
        self.number = number
    }

    var sounds: String {
        return notes.filter{ number % $0.key == 0 }
                   .keys.sorted().map{ notes[ $0 ]! }
                       .joined( separator: "" )
    }
}

print( Raindrops( 105 ).sounds ) // Returns "PlingPlangPlong as expected

我正在使用Xcode版本9.0(9A235)。

我显然没有足够的声誉来发布截图。

0 个答案:

没有答案