将属性类型作为参数传递

时间:2015-03-09 14:19:43

标签: 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)

关闭会有帮助,如果是这样的话?

2 个答案:

答案 0 :(得分:7)

我不确定这是你想要的,但使用闭包:

func f1<T>(car: Car, getter: Car -> T) {
    println(getter(car))
}

let c1 = Car()

f1(c1, {$0.doors})
f1(c1, {$0.price})

答案 1 :(得分:3)

您可以使用键值编码:

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")