有没有办法在Swift 2中获取变量的编译时名称? 我的意思是第一个变量名,它引用一个新的类实例,如果有的话。
这是一个简单的例子:
column
我已经检查了有关处理镜像或客观反思的主题的类似问题。但在所有这些情况下,只能在类中获取属性名称 - 在上面的示例public class Parameter : FloatLiteralConvertible {
var name:String?
var value:Double
// init from float literal
public required init (floatLiteral value: FloatLiteralType) {
self.value = Double(value)
self.name = getLiteralName()
}
func getLiteralName () -> String {
var literalName:String = ""
// do some magic to return the name
return literalName
}
}
let x:Parameter = 2.0
print(x.value) // this returns "2.0"
print(x.name!) // I want this to return "x"
和name
中。
2014年提出了同样的问题 - Swift: Get Variable Actual Name as String - 我希望,从那时起,swift 2就有了解决方案。
答案 0 :(得分:2)
不,没有办法做到这一点。
你必须明白,在编译状态下,变量通常不存在。它可以被优化,或者仅表示为执行堆栈上的项目。
即使在Swift具有更好反射的语言中,通常也无法检查局部变量。
老实说,动态获取局部变量的名称没有实际用例。