ios - objective - the swift programming language pdf
ParĂ¡metro predeterminado opcional en Swift (4)
¿Tendrás que usar cadenas opcionales String?
como su tipo de argumento, con valores por defecto de nil
. Luego, cuando llama a su función, puede suministrar una cadena o dejar de lado ese argumento.
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
}
Dentro de su función, tendrá que verificar cada argumento en busca de nil
y reemplazarlo con un valor predeterminado allí. Usando el ??
El operador lo hace fácil.
Luego puede llamar a su función proporcionando todos los argumentos, no los argumentos o solo los que desea incluir:
test(string: "foo", middleString: "bar", endString: "baz")
test()
test(string: "hello", endString: "world")
Tengo una función con parámetros por defecto en swift
func test(string: String = "", middleString: String = "", endString: String = "") -> Void {
// do stuff
}
Quiero pasar en variables que serán cadenas opcionales.
let string: String? //
let middleString: String?
let endString: String?
¿Cómo lo hago para que si los parámetros son nulos, utilice los parámetros predeterminados? Si no, use los valores dentro de los opcionales
test(string, middleString: middleString, endString: endString)
Nota: ¿No interpretas estos parámetros opcionales como ?
, este es un enfoque diferente.
Parámetros totalmente opcionales, es decir, ni siquiera utilizarlos al llamar al método.
func doAddition(value1Name value1:Int = 0, value2Name value2:Int = 0, value3Name value3:Int = 0){
print(value1+value2+value3)
}
Ahora todos los parámetros son opcionales para agregar. llama como quieras,
doAddition(value1Name: 1)
doAddition(value1Name: 1, value2Name: 2)
doAddition(value3Name: 3)
Prueba esto:
test(string: string ?? "", middleString: middleString ?? "", endString: endString ?? "")
Swift 3
Lo escribí así:
test(string: String? = "", middleString: String? = "", endString: String? = "") {
}
de esa manera puede llamar a test () con o sin argumentos y obtener sus valores predeterminados si no se proporciona ningún parámetro