Имя доступа оборачиваемого объекта в реализации оболочки свойств Swift
Я использую оболочки свойств Swift, чтобы определить что-то вроде:
@MyWrapper var foo: Int
А в реализации оболочки свойств я хотел бы получить доступ к имени переменной foo в виде строки. Что-то вроде этого:
@propertyWrapper
public struct MyWrapper<Type> {
init() {
// Get access to "foo" -- name of var as String
}
}
Предложения?
1 ответ
Чтобы передать имя переменной в оболочку; вы можете использовать этот альтернативный способ.
@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
Примечание: в методе инициализации обязательно упоминание wrappedValue. Если только это не сработало для меня.
(init (wrappedValue initialValue: Double, _ nameOfTheVariable: String))