gpt4 book ai didi

ios - var 上的不可变数组?

转载 作者:行者123 更新时间:2023-11-29 02:51:28 26 4
gpt4 key购买 nike

我收到错误:

“Array Character>”类型的不可变值只有名称为 removeAtIndex() 的可变成员

数组应该有内容,因为 removeAtIndex 行在一个循环中,如果计数 > 1

func evaluatePostFix(expression:Array<Character>) -> Character
{
var stack:Array<Character> = []
var count = -1 // Start at -1 to make up for 0 indexing

if expression.count == 0 {
return "X"
}

while expression.count > 1 {
if expression.count == 1 {
let answer = expression[0]
return answer
}

var expressionTokenAsString:String = String(expression[0])
if let number = expressionTokenAsString.toInt() {
stack.append(expression[0])
expression.removeAtIndex(0)
count++
} else { // Capture token, remove lefthand and righthand, solve, push result
var token = expression(count + 1)
var rightHand = stack(count)
var leftHand = stack(count - 1)
stack.removeAtIndex(count)
stack.removeAtIndex(count - 1)
stack.append(evaluateSubExpression(leftHand, rightHand, token))
}
}
}

有人知道这是为什么吗?谢谢!

最佳答案

因为所有函数参数都作为“let”按值隐式传递,因此无论它们在函数外是什么,在函数内都是常量。

要修改函数内的值(不会影响返回值),您可以显式使用 var:

func evaluatePostFix(var expression:Array<Character>) -> Character {
...
}

关于ios - var 上的不可变数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com