在 Swift 中改变函数参数

2024-04-13

在 Swift 中,是否有可能在该函数的作用域内改变作为参数传递给函数的变量所指向的值?

func exampleFunction(value: String, index: Int) -> Bool {
    value = "Changed Value" // Error
    index = 3  // Error

    return true
}

通过以下方式调用它:

var flag = exampleFunction("Passed Value", 2)

是否可以在范围内改变作为参数传递的参数exampleFunction?如果没有,还有其他方法可以做到这一点吗?因为使用这个我们只改变 temp 的值。

var temp = value
temp = "temp Change"

从您的示例看来,您需要更改函数内传递的参数作为副作用,并且需要更新的值在函数调用后可用。如果是这种情况,您需要使用inout修饰符。

否则,如果您需要的只是修改函数调用内部的参数,则可以在函数定义中将它们显式定义为变量:

使用输入输出参数

首先,将函数声明更改为:

func exampleFunction(inout value: String, index: inout Int) -> Bool

现在,输入输出参数有一个值传递给函数,由函数修改,然后从函数传回,替换原始值。为此,您不能将文字传递到函数中,因为之后将没有地方可以存储修改后的值。事实上,它必须是一个变量。 您不能传递常量或文字值作为参数,因为常量无法修改。因此,将您的函数调用更改为:

var passed = "passedValue"
var index = 2

var b = exampleFunction(&passed, &index)

通话结束后,双方passed and index将包含由函数修改的新值。

另外,请注意&调用函数时在每个参数之前。它必须存在,以表明参数可以被函数修改。

使用可变参数 – 在 Swift 3 中删除

在这种情况下,您需要做的就是更改函数声明以使用变量参数,如下所示:

func exampleFunction(var value: String, var index: Int) -> Bool

对函数范围内的参数所做的更改在函数外部不可见,也不会在函数调用后存储在任何位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中改变函数参数 的相关文章

随机推荐