gpt4 book ai didi

swift - 无法更改数组中的元组

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:44 25 4
gpt4 key购买 nike

我正在尝试更改数组中的元组,但是,当我尝试
emo = (type:emo.type,strength:increaseStrength(emo.strength))
它给我错误

“无法分配给‘let’值‘emo’

这是我的代码:

var emotions : [(type : String, strength: Int)] = [("happy",0),("scared",0),("tender",0),("excited",0),("sad",0)]

func increaseStrength(i:Int)->Int {
switch i {
case 0: return 1
case 1: return 2
case 2: return 3
case 3: return 0
default :return 0
}
}

@IBAction func HappyBA(sender: AnyObject) {
for emo in emotions {
if (emo.type == "happy" ){
emo = (type:emo.type,strength:increaseStrength(emo.strength))

}
}
println(emotions)
}

如果有更好的方法来完成作业,请告诉我,我非常感激!谢谢..

最佳答案

分配给 emo 没有意义,即使您可以这样做。这与替换数组中的相应对象不同 - 这是您想做的。 emo 是一个副本;即使你要设置它的一个属性,它也不会影响数组中的那个。当然,设置变量 不会神奇地读回数组!

这是一种解决方案。不要在你的 for 循环中循环遍历 emotions,而是循环遍历 enumerate(emotions)。现在你有了一个索引号和情绪的元组。如果这是正确的情绪类型,则通过索引号写入数组。

for (ix,emo) in enumerate(emotions) {
if emo.type == "happy" {
emotions[ix] = (type:emo.type,strength:increaseStrength(emo.strength))
}
}

或者您可以使用 map

emotions = emotions.map  {
emo in
if emo.type == "happy" {
return (type:emo.type,strength:increaseStrength(emo.strength))
} else {
return emo
}
}

关于swift - 无法更改数组中的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915526/

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