我所遇到的(最绝的)一个功能,我不太明白。 我有一个封闭,这需要一个Float
,并没有返回值,又名(number: Float) -> Void
。 在那封,我就可选值进行通话,而不是迫使其解包,因为我喜欢的行为,因为可选的是一个委托(=如果是零,没有做任何事情)。
但是,当我这样做,我得到一个错误: Cannot convert the expression's type '...' to type Float.
有趣的是,当我只需添加println()
错误消失。 我简化了我的情况下,为说明小小的例子:
var optional: [String : Int]?
let closure: (number: Int) -> Void = { (number) -> Void in
optional?.updateValue(number, forKey: "key")
//println() <-- when this gets uncommented, error disappears
}
我的选择将是编译器可能不喜欢,在某些情况下,我没有处理浮点数,但因为我没有返回值,那么它应该只是消失吗? 我在想什么?