Имя доступа оборачиваемого объекта в реализации оболочки свойств 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))

Другие вопросы по тегам