Если у вас есть обе функции someParam
(каждая с другим именем параметра), тогда строка:
let funny = someParam
больше не работает, так как неизвестно, на какую из двух someParam
функций вы ссылаетесь. Это решается путем предоставления однозначного имени:
let funny = someParam(p1:) // or someParam(p2:)
Обратите внимание, что funny
имеет тип (String?) -> String?
. Обе функции someParam
имеют один и тот же тип. Вот почему вы должны предоставить более подробную информацию для устранения неоднозначности. Имена параметров не меняют тип функции.
При непосредственном вызове функции вы должны указать полное имя функции, которое включает любые именованные метки параметров.
Но когда вы создаете переменную замыкания и присваиваете ей значение функции, вам не нужно предоставлять больше базового имени функции, если это имя однозначно в данном контексте.