Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 快速错误“;无法为[Uint8]类型的值下标;_Arrays_Swift - Fatal编程技术网

Arrays 快速错误“;无法为[Uint8]类型的值下标;

Arrays 快速错误“;无法为[Uint8]类型的值下标;,arrays,swift,Arrays,Swift,这件事我已经琢磨了大约一个小时,头发都快用完了 我在AdventOfCode.com第4天玩得很开心(10/10,会再玩一次),希望这个小功能能正常工作。(请不要评论我的代码有多漂亮。这本来是为了快速和肮脏,但现在只是肮脏。见鬼,我甚至不知道代码是否有工作的机会。不管是谁…) func countDigestLeadingZero(最简[UInt8])->Int{ 变量计数:Int=0 打印(图形[0]) 而((计数0)){ 计数++ } 返回计数 } 错误发生在最原始的[theCount]处

这件事我已经琢磨了大约一个小时,头发都快用完了

我在AdventOfCode.com第4天玩得很开心(10/10,会再玩一次),希望这个小功能能正常工作。(请不要评论我的代码有多漂亮。这本来是为了快速和肮脏,但现在只是肮脏。见鬼,我甚至不知道代码是否有工作的机会。不管是谁…)

func countDigestLeadingZero(最简[UInt8])->Int{
变量计数:Int=0
打印(图形[0])
而((计数<16)和&(计数前导零位(数字[计数]为Int)>0)){
计数++
}
返回计数
}
错误发生在最原始的[theCount]处,是“无法为类型为“[UInt8]”的值下标”。虽然不熟悉Swift,但我很确定它告诉我的是,我不能在UInt8数组上使用索引(任何类型)。但是,请注意,
打印(最简[0])
行不会导致错误


我已经用谷歌搜索出了这个问题的答案,但要么我没有找到明显的解决方案,要么我无法解释我发现的结果,其中大多数结果似乎与这个看似简单的问题无关。

错误消息具有误导性。问题是你不能 使用将
UInt8
转换为
Int

theDigest[theCount] as Int
Int(theDigest[theCount])
您必须使用从
UInt8
创建一个新的
Int

theDigest[theCount] as 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)

给出了第二行的建设性错误消息。

天哪,这是不清楚的。谢谢你给我分出这个表达式的提示。我已经远离编程太久了,以至于我忘记了一些最基本的疑难解答。