История изменений
Исправление eao197, (текущая версия) :
Ну вполне логично.
Логично, что class-ы живут по своим законам, а struct-ы — по своим? И отношение к иммутабельности у них совсем разные? Классная логика, чё. Яблочная.
Наверное, люди так ахирели от десятилетий программирования на Objective-C, что Swift им теперь кажется венцом творения.
Но никто не мешает сделать интерфейс с одними геттерами и хранить указатель на него.
А что помешает вызвать внутри геттера какой-то мутирующий метод. Ну чисто по ошибке. И ловить потом баги в многопоточном коде, когда кто-то расшарил ссылку на интерфейс с геттерами между несколькими потоками?
Вот в D есть иммутабельность, там компилятор разработчика по рукам бьет за такие вещи, что хорошо.
Исходная версия eao197, :
Ну вполне логично.
Логично, что class-ы живут по своим законам, а struct-ы — по своим. И отношение к иммутабельности у них совсем разные. Классная логика, чё. Яблочная.
Наверное, люди так ахирели от десятилетий программирования на Objective-C, что Swift им теперь кажется венцом творения.
Но никто не мешает сделать интерфейс с одними геттерами и хранить указатель на него.
А что помешает вызвать внутри геттера какой-то мутирующий метод. Ну чисто по ошибке. И ловить потом баги в многопоточном коде, когда кто-то расшарил ссылку на интерфейс с геттерами между несколькими потоками?
Вот в D есть иммутабельность, там компилятор разработчика по рукам бьет за такие вещи, что хорошо.