我有一个泛型函数,它接受任何对象的值和类型为T的输入输出参数。我想通过向下转换值来输入输出参数为任意对象的值,以输入类型T. / p>
func genericFunction<T>(value:AnyObject, inout object:T) {
if let castedValue = value as? T {
object = castedValue
}
}
当我调用我的函数时,没有设置对象的值,因为向下转换失败。
var object:String = "oldValue"
var newValue:String = "newValue"
genericFunction(newValue, &object)
println(object) // prints oldValue
答案 0 :(得分:1)
通过将AnyObject更改为“Reflectable”来解决此问题。也使用“Any”。 String实际上并不符合AnyObject。
func genericFunction<T>(value:Any, inout object:T) {
if let castedValue = value as? T {
object = castedValue
}
}
编辑: Any是我想要使用的类型,因为Reflectable意味着用于Reflection和String恰好符合它。