Просто для начала - в этом коде есть нет Необязательно. Необязательные обозначены с помощью ?
и !
. Примечание: функции должны соответствовать Верблюжий кейс для удобства чтения в Swift.
Цель подчеркивания
Рассмотрим вашу функцию:
func twoFer(_ x: String = "you ", y: String = "one for me") -> String {
return "one for \(x) " + "\(y)"
}
Вызывается так:
twoFer("Alice", y: "Steve")
Подчеркивание - как и в других местах Swift - игнорировать значение или, в данном случае, метку параметра. Документацию по вашей проблеме можно найти здесь, в разделе Метки аргументов функций и Имена параметров .
Метки параметров
В качестве альтернативы ваша функция (тайно) выглядит следующим образом - обратите внимание на двойное y:
func twoFer(_ x: String = "you ", y y: String = "one for me") -> String {
return "one for \(x) " + "\(y)"
}
Имя параметра y
отображать не нужно - его можно упростить до одного y
, но, как я уже сказал, это то, как оно «тайно» выглядит.
В этом случае вы вызываете функцию следующим образом:
twoFer("Alice", y: "Steve")
Как работает один параметр?
Вы создали параметр со значением по умолчанию , показанным =
, например x: String = "you "
- и он выглядел бы как x: String
, если у вас не было значения по умолчанию. Значения по умолчанию просто избавляют от ненужных параметров.
Почему y
не работает при инициализации?
Проще говоря, вы устанавливаете только имя параметра для x
. Установите значение y
следующим образом с подчеркиванием:
_ y: String = "one for me"