Я работаю свой путь через книгу о Patterns Swift Дизайна и наткнулся на пример, где автор хочет, чтобы гарантировать, что любая инициализацию подкласса определенного класса должен передавать значение требуемого базового класса:Необычная стремительная идиома - для чего?
class Employee {
private var professionBV: String // BV = backingVariable
private init(profession: String) {
self.professionBV = profession
}
final var profession: String {
return professionBV
}
}
// Even if you create your own init here, you always have to pass in a
// value for profession
class Nurse: Employee { }
Что я не понимаю, это то, что автор набирает, используя опорную переменную в сочетании с вычисленным свойством. Разве это не просто эквивалент этому:
// Remove the backing variable, mark profession as final - what have I lost?
class Employee {
final private var profession: String
private init(profession: String) {
self.profession = profession
}
}
Книга представляет собой * Pro Design Patterns в Swift *, и я на самом деле очень впечатлен этим. Интересно, что вы упоминаете '' Java'' и '' C#'', хотя, поскольку сам автор упоминает эти два языка совсем не так, откуда он использует эту идиому. –