【发布时间】:2020-03-30 18:44:49
【问题描述】:
我正在尝试编写简单的 Swift for 循环,如下所示:
for i in [0...10] {
// ...
}
for i in [0..<10] {
// ...
}
由于 Swift 中没有经典的 C 风格 for 循环,这些for-in 循环很重要。我正在尝试枚举通过 Swift 的 ... 和 ..< 语法构建的任何 Ints 数组。
请注意,如果我“手动”构造一个 Ints 数组而不是使用 [...] 或 [..<],它可以正常工作:
for i in [0, 1, 2, 3, 4, 5] {
// this works fine
}
但[0..<5] 循环基本上在我尝试使用值i 的任何时候都会产生错误:
let _ = i + 1
这是我得到的错误:
- Binary operator `'+'` cannot be applied to operands of type `'ClosedRange<Int>'` and `'Int'`
- Binary operator `'+'` cannot be applied to operands of type `'Range<Int>'` and `'Int' `
我也试过这个:
let _ = String(i)
我得到:
Ambiguous reference to initializer `'init(_:)'`
为什么这些简单的for-in 循环不起作用?
为什么错误引用Range 和ClosedRange?我期待一个Int。
【问题讨论】:
-
如果立即在语言指南中找到解决方案,这真的值得一个自我回答的问题吗?
-
@MartinR 我只是花了太长时间试图自己解决这个问题。 尝试对错误消息进行 SEO。 潜在的常见误解:它是正确的
Range类型,不是您创建的。正如人们所想的那样,“一个整数数组”。 -
这个问题不是“错别字”...我非常特别地试图记录循环
[0, 1, 2, 3]Int 数组和0...3Range 之间的差异(以及生成的错误消息当您错误地循环遍历[0...3] Array<Range>)。
标签: swift for-loop range for-in-loop