gpt4 book ai didi

arrays - swift 错误 "Cannot subscript a value of type [Uint8]"

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:18 24 4
gpt4 key购买 nike

大约过去一个小时我一直在为这个问题困惑,我的头发都快没了。

我在 AdventOfCode.com 第 4 天玩得很开心(10 月 10 日,会再次玩)并希望这个小功能起作用。 (请不要评论我的代码不是多么漂亮。这意味着快速和肮脏,但现在只是肮脏。哎呀,我什至不知道代码是否有机会工作。任何人...)

func countDigestLeadingZeros( theDigest:[UInt8] ) -> Int {
var theCount: Int = 0

print(theDigest[0])

while ((theCount < 16) && (countLeadingZeroNybbles( theDigest[theCount] as Int)>0)) {
theCount++
}

return theCount
}

错误发生在 theDigest[theCount] 处,错误是“无法下标 '[UInt8]' 类型的值”。虽然不熟悉 Swift,但我很确定它告诉我的是我不能在 UInt8 数组上使用(任何类型的)索引。但是请注意,print(theDigest[0]) 行不会导致错误。

我用 Google 搜索了这个问题,但要么我错过了明显的解决方案,要么无法解释我找到的结果,其中大部分似乎与这样一个看似简单的问题无关。

最佳答案

错误信息具有误导性。问题是你不能 UInt8 转换为 Int

theDigest[theCount] as Int

你必须从 UInt8创建一个新的 Int

Int(theDigest[theCount])

相反。

如果您不了解某些错误消息的原因,通常是有助于将一个复杂的表达式拆分成几个简单的表达式。在这种情况下

let tmp1 = theDigest[theCount]
let tmp2 = tmp1 as Int // error: cannot convert value of type 'UInt8' to type 'Int' in coercion
let tmp3 = countLeadingZeroNybbles(tmp2)

为第二行给出建设性的错误信息。

关于arrays - swift 错误 "Cannot subscript a value of type [Uint8]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com