You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中使用随机键从字典取值打印时遇到问题

解决随机获取字典值的问题

嘿,我来帮你搞定这个游戏里的小问题!你的代码里主要有两个地方需要调整,我一步步给你说清楚:

问题分析

  1. 类型转换语法错误:你写的windCard[die:Int]完全不对,字典的下标访问是把键直接放在方括号里,而且die是UInt32类型,字典的键是Int,得先把die显式转换成Int类型才行,正确的写法是windCard[Int(die)]。
  2. 可选值未处理: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:17:46