Swift中使用随机键从字典取值打印时遇到问题
解决随机获取字典值的问题
嘿,我来帮你搞定这个游戏里的小问题!你的代码里主要有两个地方需要调整,我一步步给你说清楚:
问题分析
- 类型转换语法错误:你写的
windCard[die:Int]完全不对,字典的下标访问是把键直接放在方括号里,而且die是UInt32类型,字典的键是Int,得先把die显式转换成Int类型才行,正确的写法是windCard[Int(die)]。 - 可选值未处理:Swift里字典通过下标取值返回的是可选值(因为可能找不到对应的键),直接打印的话会输出带
Optional()包裹的内容,所以需要做解包处理。
修正后的代码
var die: UInt32 = 0 let windCard = [ 1:"1 Left", 2:"2 Left", 3:"1 Down Left", 4:"2 Down Left", 5:"1 Down", 6:"2 Down", 7:"1 Right Down", 8:"2 Right Down", 9:"1 Right", 10:"2 Right" ] die = arc4random() % 10 + 1 // 安全解包的方式(推荐),避免潜在崩溃 if let windDirection = windCard[Int(die)] { print("The wind blows the mosquitoes \(windDirection)") } else { print("Unexpected die value!") }
如果你确定die的取值范围(1-10)一定在字典的键集合里,也可以用强制解包(但只推荐在完全确定的场景下使用):
print("The wind blows the mosquitoes \(windCard[Int(die)]!)")
额外小优化
我把原句里的blow改成了blows,因为主语是the wind(第三人称单数),语法更准确哦~
内容的提问来源于stack exchange,提问作者Fernando Fuentes Martins
相关产品推荐
相关产品推荐

