我正在使用 Swift 属性包装器来定义如下内容:
@MyWrapper var foo: Int
在属性包装器的实现中,我想以字符串的形式访问变量 foo 的名称。像这样的东西:
@propertyWrapper
public struct MyWrapper<Type> {
init() {
// Get access to "foo" -- name of var as String
}
}
建议?
我正在使用 Swift 属性包装器来定义如下内容:
@MyWrapper var foo: Int
在属性包装器的实现中,我想以字符串的形式访问变量 foo 的名称。像这样的东西:
@propertyWrapper
public struct MyWrapper<Type> {
init() {
// Get access to "foo" -- name of var as String
}
}
建议?
将变量名传递给包装器;您可以使用这种替代方式。
@propertyWrapper
public struct MyWrapper<Type> {
var wrappedValue: ... {
set{.....}
get{.....}
}
init(wrappedValue initialValue: Double, _ nameOfTheVariable: String ) {
precondition(!nameOfTheVariable.isEmpty)
//you can access nameOfTheVariable here
}
}
然后像下面这样使用它,
@MyWrapper("foo") var foo: Int
注意:在 init 方法中提到 WrappedValue 是必须的。除非,它对我不起作用。
( init( wrappedValue initialValue: Double, _ nameOfTheVariable: String) )