你好,我正在尝试学习Swift。我有一点JavaScript的经验,所以我试图用与平时相同的方式来建立这个循环。实际上函数输出了它应该输出的结果,但我一直收到错误消息,不确定自己做错了什么。以下是我的代码:
import UIKit
let dir: [String] = ["north", "east", "south", "west"]
var num = dir.count
func move(){
for i in 0 ... num{
var holder = dir[i]
switch holder{
case "north":
print("you've moved north")
case "east":
print("you've moved east")
case "south":
print("you've moved south")
case "west":
print("you've moved west")
default:
print("where you going?")
}
if i == 3{
print("round the world")
}
}
}
move()
我在最后一行 "move()" 上面遇到了这个错误:
错误:执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)。
这是控制台输出的内容:
你向北移动
你向东移动
你向南移动
你向西移动
绕过世界
致命错误:索引超出范围:文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1103.2.25.8/swift/stdlib/public/core/ContiguousArrayBuffer.swift,第444行
num = dir.count
返回 4,因为这是数组中元素的数量。但是你循环从元素零(正确)到元素 4(不存在)。使用0..<num
,就像 Ashish 演示的那样,循环从零到 num 减一。 - Magnas