Метки аргументов
Часть раздела Основы путешествия по Swift на Coddy — урок 54 из 86.
Swift дает вам контроль над тем, как читаются вызовы функций, с помощью меток аргументов. Метка аргумента — это то, что вы используете при вызове функции, в то время как имя параметра — это то, что вы используете внутри тела функции.
Вы можете указать и то, и другое, написав метку аргумента перед именем параметра:
func greet(to name: String) {
print("Hello, \(name)!")
}
greet(to: "Alice") // Вывод: Hello, Alice!Здесь to — это метка аргумента (используется при вызове), а name — имя параметра (используется внутри функции). Это делает вызов более естественным для чтения: "greet to Alice."
Иногда вы хотите полностью опустить метку для более чистых вызовов. Используйте нижнее подчеркивание (_) в качестве метки аргумента:
func square(_ number: Int) -> Int {
return number * number
}
print(square(5)) // Вывод: 25Без нижнего подчеркивания вам пришлось бы писать square(number: 5). Нижнее подчеркивание убирает это требование, делая вызов проще, когда имя функции уже само по себе проясняет её назначение.
Задание
ЛегкоСоздайте две функции, которые демонстрируют различные техники использования меток аргументов:
Функция 1: send
- Используйте метку аргумента
messageс именем параметраtext(типString) - Используйте метку аргумента
toс именем параметраrecipient(типString) - Возвращайте строку в формате:
"Sending '[text]' to [recipient]"
Функция 2: double
- Используйте нижнее подчеркивание
_, чтобы опустить метку аргумента - Имя параметра
number(типInt) - Возвращайте число, умноженное на 2
После определения обеих функций считайте две строки и одно целое число из входных данных, затем вызовите обе функции и выведите результаты на отдельных строках.
Вы получите следующие входные данные:
- Первая строка: текст сообщения (например,
"Hello") - Вторая строка: имя получателя (например,
"Alice") - Третья строка: число для удвоения (например,
"7")
Например, если входные данные — "Hello", "Alice" и "7", вывод должен быть следующим:
Sending 'Hello' to Alice
14Шпаргалка
Swift позволяет управлять тем, как читаются вызовы функций, используя метки аргументов. Метка аргумента используется при вызове функции, в то время как имя параметра используется внутри тела функции.
Укажите оба значения, написав метку аргумента перед именем параметра:
func greet(to name: String) {
print("Hello, \(name)!")
}
greet(to: "Alice") // Результат: Hello, Alice!Здесь to — это метка аргумента, а name — имя параметра.
Чтобы опустить метку аргумента для более лаконичных вызовов, используйте нижнее подчеркивание (_):
func square(_ number: Int) -> Int {
return number * number
}
print(square(5)) // Результат: 25Без нижнего подчеркивания вам пришлось бы писать square(number: 5).
Попробуйте сами
// Чтение входных данных
let messageText = readLine()!
let recipientName = readLine()!
let numberToDouble = Int(readLine()!)!
// TODO: Напишите свой код ниже
// Определите функцию 'send' с метками аргументов 'message' и 'to'
// Определите функцию 'double' с пропущенной меткой аргумента, используя '_'
// Вызовите обе функции и выведите результатыВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод