本文介绍了修改函数中的数组不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我调用一个函数来处理和修改数组.但是数组根本不改变.看起来像是Swift的主要错误???

I call a function to process and modify an array. But the array does not change at all. Looks like a Swift major bug ???

var Draw_S = [String]();
var Draw_E = [String]();
override func viewDidLoad() {
    super.viewDidLoad()
    Draw_E.append("E")
    Draw_E.append("E")
    Draw_E.append("E")
    Draw_E.append("E")
    Draw_E.append("E")

    Draw_S.append("S")
    Draw_S.append("S")
    Draw_S.append("S")
    Draw_S.append("S")
    Draw_S.append("S")
    alter_them(Draw_S, data2: Draw_E)
    for (ix, _) in Draw_S.enumerate(){
        print("index: \(ix) array S: \(Draw_S[ix]) array E: \(Draw_E[ix])")
    }
}
func alter_them( var data: [String], var data2: [String]){
    for (i, _) in data.enumerate(){
        data[i] = "1"
    }
    for (i, _) in data2.enumerate(){
        data2[i] = "2"
    }
}

调用该函数后的结果显示原始数组内容.

The result after calling the function shows original array content.

推荐答案

alter_them中的数组是原始文件的副本.

The arrays inside alter_them are a copy of the originals.

使用inout修改原始数组:

func alter_them(inout data: [String], inout data2: [String]){
    for (i, _) in data.enumerate(){
        data[i] = "1"
    }
    for (i, _) in data2.enumerate(){
        data2[i] = "2"
    }
}

alter_them(&Draw_S, data2: &Draw_E)

这篇关于修改函数中的数组不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 10:17
查看更多