Swift 2中从函数返回的字符串数组无法更改

3

我有一个playground示例:

import UIKit

var testArray: [[String]] = [["2","2"],["1","1"]]

testArray[0][0] = "3" // Working

func getTestArray() -> [String] {

    return testArray[0]

}

var test = getTestArray()[0] = "4" // Error: Immutable Value

我该如何获取testArray的引用以便修改它?

改变test不会改变testArray!


Swift 数组是值类型。你的函数返回一个,而不是对原始数组的引用。 - Martin R
我该如何返回引用呢? - Jonas
https://dev59.com/7l4c5IYBdhLWcg3w7-B4 - Anik Islam Abhi
有点不相关,但你为什么还在使用Swift 2呢? - Sweeper
@Sweeper 这是为一个使用过时的 SDK 的项目,可惜无法更新。 - Jonas
3个回答

3

getTestArray() 返回一个,而不是一个引用。因此,函数返回的值不能被编辑,只能更改变量。要更改变量,请使用:

var testVal = getTestArray() // get the value
testVal[0] = "4" // change the value
testArray[0] = testVal // SET the value of the reference `testArray` (change the value)

使用这个解决方案,getTestArray() 将变得无用。你可以直接获取 testArray。但也许没有更好的解决方案。 - Jonas
@JonasSchafft 老实说,你为什么需要这样的函数? - Papershine
很难解释,但在特定情况下会对我有所帮助。 - Jonas

0
你需要给test赋值,然后再改变它:
var test = getTestArray()
test[0] = "4"

那我就不改变testArray。 - Jonas

0
var test = getTestArray()
test[0] = "4"
print(test)

那我就不会修改 testArray。 - Jonas
我需要更改testArray。不是其他东西。我能得到引用吗? - Jonas
它们不是引用类型。 - Catherine
使用类来代替。 - Catherine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接