Внешние Имена Параметров

Иногда необходимо или удобно назвать имена во время вызова функции в целях показать цель каждого аргументы который передаётся в функцию.

Если вы хотите что бы вызов функции передавал имена параметров, определите внешнее имя параметра (external parameter name) для каждого из них, в дополнение к локальному имени. Вы должны написать внешнее имя перед локальным через пробел:

func какаятоФункция(внешнееИмяПараметра локальноеИмяПараметра: Int) {

//тело функции идущее тут может использоватьлокальноеИмяПараметра

//если обратится к значению аргумента этого параметра

}

ВАЖНО:

Если вы используете передачу внешнего имени параметра, тогда этовнешнее имя должно всегда и везде участвовать при вызове этой функции.

В качестве примера изучите следующую функцию, которая соединяет две строки путём вклинивания третьей между ними:

func соедини(стр1: String, стр2: String, между: String) -> String {

return стр1 + между + стр2

}

Когда вы вызываете эту функцию, то смысл этих трёх строк передаваемых в функцию не ясен:

соедини("привет", "мир", ", ")

//возвращает "привет, мир"

Прояснить цель этих значений с типами String, определите внешние имена параметров для каждого параметра функции соедини:

func соедини(строка стр1: String, кСтроке стр2: String,соСоединителем между: String) -> String {

return стр1 + между + стр2

}

В этой версии функции соедини, первый параметр имеет внешнее имястрока с типом String и локальное имя стр1; второй параметр имеет внешнее имя кСтроке с типом String и локальное имя стр2; и третий параметр с внешним именем соСоединителем и локальным именем между.

Теперь вы можете использовать внешние имена при вызове функции в ясном и недвусмысленном виде:

соедини(строка: "привет", кСтроке: "мир", соСоединителем:", ")

//возвращает "привет, мир"

Использование внешних имён позволяет использовать функцию соедини в красноречивом стиле, позволяя пользователям самим назначать имена, обеспечивая высокую читабельность и ясность тела функции.

ВАЖНО:

Оценивайте использование внешних имён параметров в случаях, когда их цель будет не ясна кому-либо, кто читает ваш код в первый раз. С другой стороны, вам не обязательно использовать внешние имена параметров, когда имя каждого параметра ясно и недвусмысленно при вызове функции.