tutorial the programming objective language curso apple ios swift

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