【发布时间】:2018-07-26 07:56:59
【问题描述】:
你能告诉我为什么不能使用Int32(或UInt、UInt8等)索引来下标Array吗?以下代码显示了哪些有效和哪些无效的示例:
var buffer = [UInt8]()
buffer.append(0)
buffer[0] = 1 // Valid
buffer[-1] = 1 // Valid :)
var index1:Int = 0
buffer[index1] = 1 // Valid
var index2:Int32 = 0
buffer[index2] = 1 // Invalid
最后一行导致这个错误:
不能用“Int32”类型的索引为“[UInt8]”类型的值下标
【问题讨论】:
-
请编辑您的问题,避免使用“Ridiculous”之类的爆发和用粗体大写字母书写单词。
-
因为
Array的index类型作为(Mutable)Collection所遵循的(Mutable)Collection协议的关联类型Index被定义为Int跨度>