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
是唯一的参数,所以不需要括号是的,如果它只接受一个参数,带或不带括号都可以。