考虑Dictionary
摩托车的名字和描述:
let data = ["Betty" : "Very fast", "Mike" : "Easy going"]
一个简单的Motorcycle
类,有两个属性。
class Motorcycle {
let name: String
let description: String
init(name: String, description: String) {
self.name = name
self.description = description
}
}
Aaand一个设计的函数,它接受两个String
值并返回Motorcycle
。
func genMotorcycle(name: String, desc: String) -> Motorcycle {
return Motorcycle(name: name, description: desc)
}
现在,假设您想将Dictionary
转换为[Motorcycle]
,您可以:
let motorcycles = map(data) { Motorcycle(name: $0, description: $1) }
或者,使用人为的genMotorcycle
函数:
let motorcycles = map(data, genMotorcycle)
由于genMotorcycle
感觉它与(String, String) -> Motorcycle
初始化程序具有相同的类型(Motorcycle
),我想知道是否有某种方法可以引用到Motorcycle
初始值设定项,而不是genMotorcycle
。
换句话说,有没有办法有效地表达以下内容?
let motorcycles = map(data, Motorcycle)
// or
let motorcycles = map(data, Motorcycle.init)
答案 0 :(得分:2)
否强>
“敲门声。”
“谁在那?”
“输入验证器。”
“输入验证器是谁?”
true
更新:从Swift 2.0开始,你确实可以传递init,例如。 String.init
或Motorcycle.init
。