在下面的代码中,我试图创建一个遍历字符串的循环,并将字符串中每个字符的值添加到总变量中。
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]!
}