首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速致命错误:超出范围的索引(超出界限的索引)

快速致命错误:超出范围的索引(超出界限的索引)
EN

Stack Overflow用户
提问于 2020-05-28 03:50:42
回答 4查看 8.4K关注 0票数 4

你好,我正在努力学习敏捷。我对javascript有一点经验,所以我尝试用我通常所做的方式来建模这个循环。这个函数实际上输出了它应该输出的内容,但是我一直收到错误消息,我不知道我做错了什么。这是我的代码:

代码语言: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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-28 04:04:16

在试图访问第四个索引的代码中,由于您使用了.循环控制语法。第四个索引没有排列。

以下是有关快速循环的一些详细信息。

代码语言:javascript
运行
复制
for index in 0...4 {
 ...
}

上面的片段说,从0开始迭代范围,包括从0到4的4。

如果不希望包含4,则使用这个称为半开范围运算符(..<)。

代码语言:javascript
运行
复制
for index in 0..<4 {
 ...
}

这将从0循环到3,并停止执行。

票数 4
EN

Stack Overflow用户

发布于 2020-05-28 03:57:46

在loop...but中,有更有效的方法来更好地理解您实现了什么.

我已经更新了您的code...it将正常运行。

代码语言:javascript
运行
复制
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()

产出:-

代码语言:javascript
运行
复制
you've moved north
you've moved east
you've moved south
you've moved west
round the world

Swift中的愉快编码:-)

票数 3
EN

Stack Overflow用户

发布于 2020-05-28 04:00:40

代码语言:javascript
运行
复制
import UIKit

class ViewController: UIViewController {

    let dir: [String] = ["north", "east", "south", "west"]

    override func viewDidLoad() {
        super.viewDidLoad()
         move()
        // Do any additional setup after loading the view.
    }

    func move(){
        for (index, element) in dir.enumerated() {
       //   print("Item \(index): \(element)")
            switch element{
                        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 index == 3{
                            print("round the world")
                        }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62056744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档