我正在研究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)。
我显然没有足够的声誉来发布截图。