Использование ключевого слова @final - PullRequest
0 голосов
/ 09 марта 2019

Когда я пытаюсь определить переменную, которой предшествует ключевое слово @final:

    class SomeClassX{
     @final var x: String
     var y: String
     init(y: String) {
         self.y = y
     }
    }

я получаю сообщение об ошибке:

'final' - это модификатор объявления, а неАтрибут

Я нахожу это действительно странным, потому что в книге Swift Programming Language написано

Вы можете предотвратить переопределение метода, свойства или индекса, пометив его как final.Сделайте это, написав атрибут @final перед его ключевым словом вводителя

Как мне его использовать?

Ответы [ 2 ]

3 голосов
/ 10 марта 2019

Вы используете очень устаревшую версию языкового руководства. Начиная с Swift 1.0, final является ключевым словом, а не атрибутом. Просто удалите @.

Вы можете увидеть это изменение в истории изменений руководства.

0 голосов
/ 10 марта 2019

Нет необходимости в @ предшествующем final. Дело в том, что вы сделали, чтобы компилятор интерпретировал final как атрибут, такой как @available. Поэтому:

class SomeClassX{
  final var x: String

  var y: String
  init(y: String) {
    self.y = y
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...