🔥

Тред (Глеб Лукьянец)


Для затравки: в swift можно писать self. перед обращением к собственным полям/методам. А можно и не писать. Что напечатает этот код?
notion image

Варианты:
🤔 51.3% "instance"
🤔 31.6% "global"
🤔 4.4% Ничего
🤔 12.7% Не скомпилируется

Правильный ответ: первый - "instance". Чтобы ваш код внезапно не сломался от неудачного добавления функции с похожим именем, свифт всегда предпочитает "ближайший" вариант. Или вовсе выдает ошибку, если имена совпадают частично.

А вот чтобы в примере выше вызывать глобальную функцию, нужно сделать не совсем очевидное: указать перед вызовом имя модуля с точкой. В нашем случае - текущего. Причем в плейграундах и скриптах это, конечно же, не работает.

У Котлина, кстати, подход аналогичный. А ObjC и Java не пострадали: в первом нет перегрузок, а во втором - глобальных функций, лол.