美文网首页Swift
Swift如何修改方法参数

Swift如何修改方法参数

作者: 喔牛慢慢爬 | 来源:发表于2021-07-26 11:45 被阅读0次

在Swift中不允许修改方法函数中的参数值,因为方法中参数传递的是值而不是地址,参数被修改时编译器会认为此参数为常量类型,并且提示'Cannot assign to value: 'xxx' is a 'let' constant'的错误。

看下面代码:

 func verifyInout() -> Void {
    let datas: [Any] = [1,2,3,4,5,6]
    print("datas",datas)
    handleData(datas: datas)
    print("\(#function)", datas)
 }
    
 func handleData(datas:[Any]) -> Void {
    datas = [7,8,9,0]
    print("\(#function)",datas)
 }

此时会报错误


那如何实现方法/函数参数可以被修改呢?

解决方法:使用inout将方法/函数参数定义为输入输出形式参数;

在形式参数定义开始的时候在前边添加一个 inout关键字可以定义一个输入输出形式参数。输入输出形式参数有一个能输入给函数的值,函数能对其进行修改,还能输出到函数外边替换原来的值.

将上面的代码进行修改就可以了

 func verifyInout() -> Void {
    var datas: [Any] = [1,2,3,4,5,6]
    print("datas",datas)
    handleData(datas: &datas)
    print("\(#function)", datas)
 }
    
 func handleData(datas: inout [Any]) -> Void {
    datas = [7,8,9,0]
    datas.insert(contentsOf: [11,12], at: 2)
    print("\(#function)",datas)
 }

调用时使用&取地址,想方法中传入地址

handleData(datas: &datas)

注意:只能把变量作为输入输出形式参数的实际参数。你不能用常量或者字面量作为实际参数,因为常量和字面量不能修

查看对象内存结构

fr v -R datas 和 fr v -R &datas

相关文章

网友评论

    本文标题:Swift如何修改方法参数

    本文链接:https://www.haomeiwen.com/subject/drowmltx.html