小编Mo *_*ati的帖子

当我在 index(_ , offsetBy , limitBy) 函数中将 offsetBy 值设置为等于 endIndex 值时,为什么 swift 会给出错误?

这是代码:

1-offsetBy 为 4 或更少时就可以了

    let someString = "hello"

    if let someIndex = someString.index(someString.startIndex, 
                        offsetBy: 4, limitedBy: someString.endIndex){
       someString[someIndex]
    }
    // Prints "o"
Run Code Online (Sandbox Code Playgroud)

2- 当 offsetBy 为 6 或更大时就可以了

    if let someIndex = someString.index(someString.startIndex, 
                        offsetBy: 6, limitedBy: someString.endIndex){
       someString[someIndex]
    }
    // Prints "nil"
Run Code Online (Sandbox Code Playgroud)

3-但是当offsetBy为5时它会出错

    if let someIndex = someString.index(someString.startIndex, 
                        offsetBy: 5, limitedBy: someString.endIndex){
       someString[someIndex]
    }
    // error
Run Code Online (Sandbox Code Playgroud)

错误是:

错误:Playground 执行中止:错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。进程已留在中断点,使用“thread return -x”返回到表达式求值之前的状态。

swift

4
推荐指数
1
解决办法
476
查看次数

标签 统计

swift ×1