在下面的代码中,我试图创建一个遍历字符串的循环,并将字符串中每个字符的值添加到总变量中。

var stringSent = "babbbababa"
let charValues = ["a":1,"b":2]

var total = 0

for i in stringSent.characters{
switch i{
    case "a":
        total += charValues["a"]!
        //adds 1 to total
    case "b":
        total += charValues[i]!
        //throws error
    default:
        print("default was sent")
}
 print(total)
}

最初,我打算使用for循环,这样可以尽量减少行数,如果我能找出如何正确使用变量“I”作为检索当前字符值的键,我会很乐意这样做。
for i in stringSent.characters {
    total += charValues[i]
}

我的字典有问题吗?还是这个方法不可能?我没有从苹果或谷歌那里找到任何有用的东西。

最佳答案

问题是characters是字符,但字典中的键是字符串。所以只要转换一下:

let stringSent = "babbbababa"
let charValues = ["a":1,"b":2]

var total = 0

for i in stringSent.characters{
    total += charValues[String(i)]!
}

或者,转到另一个方向-指定字典中的键应该是字符:
let stringSent = "babbbababa"
let charValues : [Character:Int] = ["a":1,"b":2]

var total = 0

for i in stringSent.characters{
    total += charValues[i]!
}

09-11 06:05
查看更多