Я использую вычисляемое свойство (используйте setter в стороне) со статическим ключевым словом, но сообщаю об ошибке [duplicate]

-2

вот мой код в swift, в чем проблема, я просто хочу использовать вычисленное свойство со статическим ключевым словом.

class TypeProperty {
  static var Info:String {
    set(str) {
      TypeProperty.Info = str
    }
    get { 
     return "none"
    }
  }
}
TypeProperty.Info = "I am Info" /* here i get error ,what is problem with it */ 
  • 0
    Какая ошибка? Время выполнения или время компиляции? Ваш код не будет работать, потому что выражение TypeProperty.Info = str внутри установщика просто вызывает рекурсивно. Хотя какой смысл иметь установщик, если получатель всегда будет возвращать "none" ?
Теги:

1 ответ

0
Лучший ответ

Проблема заключается в том, что когда вы устанавливаете Info TypeProperty.Info = "I am Info" она застрянет в бесконечном цикле. Это потому, что вы устанавливаете одну и ту же переменную в настройщике этой переменной.

Вы можете сделать что-то подобное..

class TypeProperty {
    static var _info:String?
    static var Info:String {
        set(str) {
            _info = str
        }
        get {
            return _info ?? "none"
        }
    }
}
  • 0
    Это значит, что когда я использую "=" назначить новое значение для вычисляемого свойства (не хранимое свойство), swift автоматически вызовет метод установки для вычисляемого свойства? Если это так, я думаю, я могу понять, что вы говорите о том, что «оно застрянет в бесконечном цикле. »
  • 0
    Да, когда вы используете оператор = за которым следует любая строка, это вызовет установщик ( set )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню