Необязательный параметр по умолчанию в Swift
У меня есть функция с параметрами по умолчанию в swift
func test(string: String = "", middleString: String = "", endString: String = "") -> Void {
// do stuff
}
Я хочу передать переменные, которые будут необязательными строками
let string: String? //
let middleString: String?
let endString: String?
Как сделать так, чтобы, если параметры равны нулю, используйте параметры по умолчанию. Если нет, то используйте значения внутри опций
test(string, middleString: middleString, endString: endString)
Ответы
Ответ 1
Вам нужно будет использовать необязательные строки String?
в качестве типа вашего аргумента со значениями по умолчанию nil
. Затем, когда вы вызываете свою функцию, вы можете указать строку или оставить этот аргумент.
func test(string: String? = nil, middleString: String? = nil, endString: String? = nil) -> Void {
let s = string ?? ""
let mS = middleString ?? ""
let eS = endString ?? ""
// do stuff with s, mS, and eS, which are all guaranteed to be Strings
}
Внутри вашей функции вам нужно будет проверить каждый аргумент для nil
и заменить его значением по умолчанию. Использование оператора ??
делает это проще.
Затем вы можете вызвать свою функцию, предоставив все аргументы, аргументы или только те, которые вы хотите включить:
test(string: "foo", middleString: "bar", endString: "baz")
test()
test(string: "hello", endString: "world")
Ответ 2
Попробуйте следующее:
test(string: string ?? "", middleString: middleString ?? "", endString: endString ?? "")
Ответ 3
Swift 3
Я написал это вот так:
test(string: String? = "", middleString: String? = "", endString: String? = "") {
}
таким образом вы можете вызвать test() с аргументами или без них и получить свои значения по умолчанию, если параметр не указан
Ответ 4
Примечание. Не интерпретируйте эти необязательные параметры как ?
, это другой подход.
Полностью необязательные параметры, т.е. даже не использовать метод вызова.
func doAddition(value1Name value1:Int = 0, value2Name value2:Int = 0, value3Name value3:Int = 0){
print(value1+value2+value3)
}
Теперь все параметры необязательны для добавления. звоните, как вам нравится,
doAddition(value1Name: 1)
doAddition(value1Name: 1, value2Name: 2)
doAddition(value3Name: 3)