class Actor {
let agent: String? = "nobody"
init(agent: String){
self.agent = agent // error: immutable value 'self.agent' may only be initialized once
}
}
let John = Actor(agent: "xyz")
Я запутался о последовательности, что происходит здесь (я полностью осведомлен о различиях между var
и let
). Но почему я получаю эту ошибку?Когда экземпляр класса инициализирован, какова последовательность?
- Если я использую метод
init
, то это не означает, что я не использую параметр по умолчанию? - Почему я не могу изменить константу по умолчанию с другой?
Да, это определенно путь, если у вас есть только несколько значений для установки значений по умолчанию. Если у вас больше 2-3, возможно, лучше определить отдельный инициализатор, который не принимает никаких параметров, который устанавливает все значения по умолчанию. – Alexander
@ Александр Парадокс здесь, я не понимаю, вы либо читаете свойства, либо нет. Если вы читаете, то да, мой ответ, мой код должен потерпеть неудачу, так как должен «позволить агенту: String?» ** или это то, что он читает эту строку, но в этот момент ничего не происходит ?! потому что это глупо, потому что он по умолчанию равен нулю и застрял там, как указано [здесь] (http://stackoverflow.com/questions/38942325/constant-unassigned-optional-will-not-be-nil-by-default). В принципе это исключение **, если вы его не читаете, я не должен получать ошибку. – Honey
@Honey Я не понимаю, что вы говорите – Alexander