在 Swift 中添加两个 [String : Int] 字典的值



所以我正在尝试使用最新的 Swift 在 Xcode 中添加两个[String : Int]字典的值。我的代码如下所示。这两个词典都有从q1q23的键,并附加了值。这就是为什么随机数停在 23 的原因。键q1在此函数中没有用处(这就是随机数从 2 开始的原因)。字典值由另一个视图控制器在向此视图控制器提供期间给出,我不手动分配它们。字典中的值不需要是可选的,因为它们将被分配值以访问此视图控制器。

我已经在谷歌上搜索了一个小时,但我无法理解 reduce、组合或映射函数,因为它们适用于此,当我只想添加时做一些如此复杂的事情似乎我忽略了一种更简单的方法。

var p1Pre:[String:Int]  = [“q1” : 1]
var p2Pre:[String:Int]  = [“q1” : 1]
var combPre:[String:Int]  = [“q1” : 0]
var pick = 0
// generates random number 2-23
func pickRandom(){
pick = Int.random(in:2...23)
} 
func addPrefs(){
// this is where i'm having trouble
combPre[“q(pick)] = p1Pre[“q(pick)”] + p2Pre[“q(pick)”]
print(combPre[“q(pick)”]
// I get an error at the plus sign here
}

我正在尝试在两个字典(p1Prep2Pre)内添加特定键的值,结果将存储在 combPre 中。 我想构建一个函数,所以如果p1Pre[“q2”] == 1p2Pre[“q2”] == 2,那么combPre[“q2”] = 3. 我在加号处收到一个错误,上面写着“binary operator “+” cannot be applied to two ‘Int?’ Operands".我将如何做到这一点?谢谢

使用下标访问字典时,表达式的类型始终是值类型的可选类型,因为字典中可能不存在您使用的键。不能将两个可选Int添加在一起。

您需要考虑"如果字典中不存在键“q(pick)”怎么办?"的情况,并相应地解开两个可选选项。

在我看来,当键不存在时,这里明智的做法是仅使用值0,因为它是加法的恒等式:

combPre[“q(pick)] = (p1Pre[“q(pick)”] ?? 0) + (p2Pre[“q(pick)”] ?? 0)

如果您100%确定密钥将存在,则可以考虑强制解开它:

combPre[“q(pick)] = p1Pre[“q(pick)”]! + p2Pre[“q(pick)”]!

只有在你100%确定的情况下才这样做,比如"如果密钥不存在,那么一定发生了非常糟糕的事情"之类的情况。

相关内容

最新更新