数组 – Swift错误“无法下标类型[Uint8]的值”

数组 – Swift错误“无法下标类型[Uint8]的值”,第1张

概述大约在最后一小时,我一直在为这个问题感到困惑,而且我的头发已经不多了. 我正在玩AdventOfCode.com第4天(10/10,将再次播放),并希望这个小功能工作. (请不要评论我的代码是多么美丽.这本来就是快速而又脏的,但它现在只是肮脏的.哎呀,我甚至不知道代码是否有机会工作.Allwho …) func countDigestLeadingZeros( theDigest:[UInt8] 大约在最后一小时,我一直在为这个问题感到困惑,而且我的头发已经不多了.

我正在玩AdventOfCode.com第4天(10/10,将再次播放),并希望这个小功能工作. (请不要评论我的代码是多么美丽.这本来就是快速而又脏的,但它现在只是肮脏的.哎呀,我甚至不知道代码是否有机会工作.Allwho …)

func countDigestLeadingZeros( theDigest:[UInt8] ) -> Int {var theCount: Int = 0print(theDigest[0])while ((theCount < 16) && (countLeadingZeroNybbles( theDigest[theCount] as Int)>0)) {        theCount++}return theCount}

错误发生在theDigest [theCount],并且是“无法下标类型的值'[UInt8]’”.虽然不熟悉Swift,但我很确定它告诉我的是我不能在UInt8s数组上使用索引(任何类型).但请注意,print(theDimgest [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 coercionlet tmp3 = countLeadingZeroNybbles(tmp2)

为第二行提供了建设性的错误消息.

总结

以上是内存溢出为你收集整理的数组 – Swift错误“无法下标类型[Uint8]的值”全部内容,希望文章能够帮你解决数组 – Swift错误“无法下标类型[Uint8]的值”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1017473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存