Swift 将属性类型作为参数传递
有没有办法将属性作为参数传递给函数Swift 将属性类型作为参数传递,swift,closures,Swift,Closures,有没有办法将属性作为参数传递给函数 class Car { let doors : Int = 4 let price : Int = 1000 } 是否有方法将Car属性作为类型传递给函数 我希望实现以下目标: func f1(car: Car, property: SomeType) { println(car.property) } let c1 = Car() f1(c1, doors) f1(c1, price) 闭包是否有帮助,如果有,如何帮助?
class Car {
let doors : Int = 4
let price : Int = 1000
}
是否有方法将Car属性作为类型传递给函数
我希望实现以下目标:
func f1(car: Car, property: SomeType) {
println(car.property)
}
let c1 = Car()
f1(c1, doors)
f1(c1, price)
闭包是否有帮助,如果有,如何帮助?您可以使用键值编码:
class Car : NSObject {
let doors : Int = 4
let price : Int = 1000
}
然后您的f1
函数可以是:
func f1(car: Car, property: String) {
println(car.valueForKey(property))
}
你可以这样称呼它:
f1(car, property: "doors")
f1(car, property: "price")
我不确定这是否是您想要的,但使用闭包:
func f1<T>(car: Car, getter: Car -> T) {
println(getter(car))
}
let c1 = Car()
f1(c1, {$0.doors})
f1(c1, {$0.price})
func f1(车:车,吸气器:车->T){
println(getter(car))
}
设c1=Car()
f1(c1,{$0.doors})
f1(c1,{$0.price})
谢谢Rob,我想知道是否有一种方法可以通过闭包或不继承NSObject来实现它?很方便,我使用的对象继承自NSObject
,所以这个解决方案正是我所需要的。太棒了!!只是有点困惑$0代表什么。$0不代表闭包中的第一个参数吗?在这种情况下,闭包只接受一个参数,即getter。请你解释一下,盖特是一辆封闭的汽车。它接收Car
实例并返回一些T
。在本例中,$0
是汽车的一个实例。非常感谢!!!非常整洁!!就我的理解而言,它与func f1(car:car,getter:(car)->T)相同。只是在括号内写(汽车)
。因为Car
是唯一的参数,所以不需要括号是的,如果它只接受一个参数,带或不带括号都可以。