Для затравки: в swift можно писать
self.
перед обращением к собственным полям/методам. А можно и не писать. Что напечатает этот код?Варианты:
🤔
51.3%
"instance"🤔
31.6%
"global"🤔
4.4%
Ничего🤔
12.7%
Не скомпилируетсяПравильный ответ: первый - "instance". Чтобы ваш код внезапно не сломался от неудачного добавления функции с похожим именем, свифт всегда предпочитает "ближайший" вариант. Или вовсе выдает ошибку, если имена совпадают частично.
А вот чтобы в примере выше вызывать глобальную функцию, нужно сделать не совсем очевидное: указать перед вызовом имя модуля с точкой. В нашем случае - текущего. Причем в плейграундах и скриптах это, конечно же, не работает.
У Котлина, кстати, подход аналогичный. А ObjC и Java не пострадали: в первом нет перегрузок, а во втором - глобальных функций, лол.