swift - retorno - ¿Cómo podemos cambiar el parámetro de función?
sumar dos numeros en xcode (4)
¿En Swift podemos cambiar los valores de los parámetros locales de función con la función?
Me gusta:
func exampleFunction(value : String, index : Int) -> Bool
{
value = "Changed Value" // it showing error
index = 3 // it showing error
return true
}
Función de llamada en viewDidLoad ():
var flag = exampleFunction("Passed Value" , 2)
¿Es posible cambiar el valor y el índice en el ámbito exampleFunction? Si no es así, ¿hay alguna otra manera de hacer esto? Porque usando esto solo cambiamos el valor de la temp.
var temp = value
temp = "temp Change"
Cambie fácilmente la variable en el bloque de función en var
func example(value : string){
var myVar = value
...
now you can change the value
myVar = "example"
}
En su ejemplo, parece que necesita cambiar los argumentos pasados dentro de la función como un efecto secundario, y necesita que los valores actualizados estén disponibles después de la llamada a la función. Si ese es el caso, necesitas usar el modificador de entrada.
De lo contrario, si todo lo que necesita es modificar los parámetros dentro de la llamada a la función, puede definirlos explícitamente como variables en la definición de la función:
Usando parámetros de entrada y salida
Primero, cambie su declaración de función a:
func exampleFunction(inout value: String, index: inout Int) -> Bool
Ahora, un parámetro de entrada / salida tiene un valor que se pasa a la función, es modificado por la función y luego se pasa de nuevo fuera de la función, reemplazando el valor original. Para que esto funcione, no puede pasar un literal a su función, ya que no habría ningún lugar para almacenar el valor modificado posteriormente. De hecho, tiene que ser una variable. No puede pasar una constante o un valor literal como argumento, porque las constantes no se pueden modificar. Por lo tanto, cambie su llamada de función a:
var passed = "passedValue"
var index = 2
var b = exampleFunction(&passed, &index)
Después de la llamada, tanto los valores passed
como los index
contendrán los nuevos valores, modificados por la función.
Además, tenga en cuenta el &
antes de cada argumento al llamar a la función. Debe estar allí, para indicar que el argumento puede ser modificado por la función.
Usando parámetros variables - Eliminado en Swift 3
En este caso, todo lo que necesita hacer es cambiar su declaración de función para usar parámetros variables, como se muestra a continuación:
func exampleFunction(var value: String, var index: Int) -> Bool
Los cambios realizados en los argumentos dentro del alcance de la función, no son visibles fuera de la función o se almacenan en cualquier lugar después de la llamada a la función.
Si es solo para el alcance de la función, puede declarar su función como
func exampleFunction(var value : String, var index : Int) -> Bool { }
Nota: Sin embargo, se eliminó en Swift3.
Simplemente añada una var ..
func exampleFunction(value : String, index : Int) -> Bool {
var value = value
var index = index
De hecho, el IDE de Xcode autofijará eso para ti.
Si su intención es modificar los parámetros en su contexto global, puede usar inout.
var El parámetro está en desuso y se eliminará de Swift 3.0. Si desea cambiar el parámetro dentro del cuerpo de su función, debe almacenar el parámetro pasado en alguna variable local y cambiarlo
func exampleFunction(var value: String, var index: Int) -> Bool {
var index = index
...
}
Sin embargo, el parámetro inout todavía está allí. Por lo tanto, si desea que los cambios que realice en el parámetro pasado se reflejen fuera del cuerpo de la función, debe usar inout Parameter.