Tracks
/
Swift
Swift
/
Temario
/
Parámetros inout
Pa

Parámetros inout en Swift

1 ejercicio

Acerca de Parámetros inout

Dentro del cuerpo de una función, los parámetros se tratan como constantes, no como variables; intentar modificar el valor de un parámetro provocará un error en tiempo de compilación. Si una función quiere modificar el valor de un parámetro, debe usar un parámetro in-out para dejar explícita esa mutabilidad.

Para usar parámetros in-out, quien programa debe tener claras tres cosas:

  1. La definición de la función debe marcar explícitamente los parámetros in-out escribiendo la palabra clave inout entre el : y el nombre del tipo en la anotación de tipo del parámetro.
  2. El valor que se pasa al parámetro in-out debe estar declarado como una variable, no como una constante. Tampoco puede ser un literal.
  3. El nombre de la variable debe ir precedido de un & en la llamada a la función, lo que lo marca explícitamente como modificable.

Cuando se hace esto, la función crea una copia interna del parámetro in-out, la modifica según lo indicado en el cuerpo de la función y, cuando la función termina, copia el valor modificado de vuelta a la variable que se pasó.

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
Hay un par de reglas adicionales que conviene conocer sobre los parámetros in-out.

1. Dentro de una función con parámetros in-out, no se puede hacer referencia a la variable que se pasó como parámetro in-out.
2. La misma variable no se puede pasar como varios parámetros in-out en la misma función.
   Por ejemplo, `inoutFunc(&mutVar, &mutVar)` provoca un error del compilador.
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Parámetros inout