- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我在使用 Switch 语句时遇到问题,当我将它与范围一起使用时,我在控制台中收到此“ fatal error :范围结束索引没有有效的后继者”。
var ArrayBytes : [UInt8] = [48 ,48 ,48]
var SuperArrayMensaje : Array = [[UInt8]]()
var num7BM : Array = [UInt8]()
for var Cont27 = 0; Cont27 < 800; Cont27++ {
ArrayBytesReservaSrt = String(Mensaje7BM[Cont27])
switch Mensaje7BM[Cont27] {
case 0...9 :
num7BM = Array(ArrayBytesReservaSrt.utf8)
ArrayBytes.insert(num7BM[0], atIndex: 2)
case 10...99 :
num7BM = Array(ArrayBytesReservaSrt.utf8)
ArrayBytes.insert(num7BM[0], atIndex: 1)
ArrayBytes.insert(num7BM[1], atIndex: 2)
case 100...255 : // --> THE problem is here "EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
num7BM = Array(ArrayBytesReservaSrt.utf8)
ArrayBytes.insert(num7BM[0], atIndex: 0)
ArrayBytes.insert(num7BM[1], atIndex: 1)
ArrayBytes.insert(num7BM[2], atIndex: 2)
default : break
}
SuperArrayMensaje.insert(ArrayBytes, atIndex: Cont27)
ArrayBytes = [48 ,48 ,48]
}
最佳答案
问题可以用这个 MCVE 重现:
let u = 255 as UInt8
switch u {
case 0...9: print("one")
case 10...99: print("two")
case 100...255: print("three")
}
在某种程度上,如果我们只是尝试创建一个覆盖此范围的范围变量,我们就会看到问题:
let r = Range<UInt8>(start: 100, end: 256)
这不会编译。首先,我们必须注意 end
Range
的参数构造函数不包含在范围内。
范围 100...255
相当于100..<256
.如果我们尝试构造该范围,则会出现编译错误:
Integer literal '256' overflows when stored into 'UInt8'
我们无法创建一个包括该整数类型的最大值的范围。有问题的是,没有 UInt8
值大于 255
.这是必需的,因为要将某些内容包含在一个范围内,它必须小于 end
。范围的值。也就是说,与 <
相比,它必须返回 true运算符(operator)。而且没有 UInt8
可以进行此声明的值:255 < n
返回真。因此,255
永远不能在 UInt8
类型的范围内.
因此,我们必须找到不同的方法。
作为程序员,我们可以知道我们试图创建的范围表示适合 UInt8
的所有三位十进制数。 ,我们可以只使用 default
这里的案例:
let u = 255 as UInt8
switch u {
case 0...9: print("one")
case 10...99: print("two")
default: print("three")
}
这似乎是最简单的解决方案。我最喜欢这个选项,因为我们不会以 default
结束。我们知道永远不会执行的案例。
如果我们真的明确想要一个捕获来自 100
的所有值的案例至 UInt8
max,我们也可以这样做:
switch u {
case 0...9: print("one")
case 10...99: print("two")
case 100..<255, 255: print("three")
default: print("how did we end up here?")
}
或者像这样:
switch u {
case 0...9: print("one")
case 10...99: print("two")
case 100...255 as ClosedInterval: print("three")
default: print("default")
}
有关 ClosedInterval
的更多阅读, 请参阅 Apple documentation或 Swift doc .
关于swift - fatal error : Range end index has no valid successor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36298549/
如果给定父指针(不使用 Queue ),我们如何在 bst 中找到节点的级别顺序后继? 最佳答案 在基本情况下,它是 node 的右兄弟节点。否则,您需要回绕到下一级,或者返回 No successo
我需要 CLRS 算法书中的提示来进行此练习: Prove that no matter what node we start at in a height-h binary search tree,
let greeting = "Guten Tag!" greeting[greeting.startIndex.successor()] // "u" greeting[greeting.start
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
我一整天都在想这个问题。我终于承认,我对 Prolog 的理解并没有我想象的那么好。 今天开始的时候,我在实现后继算术时遇到了麻烦,它乘以 2 个 s-Numbers,结构是这样的: nat(0).
我正在尝试实现一个类 Node 表示有向图中的一个节点,特别是有一组后继者和前任者。我希望 Node.predecessors 和 Node.predecessors 表现得像集合,特别是我想遍历它们
Oauth 2.0 似乎是最受支持的外部身份验证工具。然而,在网上搜索了很多很多小时后,我发现在使用 PHP 时没有简单的方法可以开始使用它。或许(但愿如此)我只是没有以正确的方式进行搜索。 这是我要
我正在使用 BST。给定一个 key ,我如何找到后继 key ?这是我到目前为止的代码。我已成功插入一个新 key 并检索给定 key 的值。现在,我需要完成下一个方法。我该如何处理这个问题? cl
在Skiena's book of algorithm design ,鉴于哈希表最多可以有 m 个桶,元素总数为 n,观察到以下最坏情况下的时间复杂度: 搜索:O(n) 后继者:O(n + m) 为
将来,C-style for statements will be removed from Swift .虽然有许多替代方法可以使用 C 风格的 for 语句,例如使用 stride ,或 ..<运
我需要构建查询,该查询返回具有超过 2 级深度的网络拓扑的结果。例如,我不会得到下一个结果: 但如果我构建“工作项和直接链接”查询,我只会得到 1 级深度,如果我构建“工作项树”,我只能选择父/子树类
当我看到 SML/NJ 最近对 version 110.79 进行了一些重大更改时,我感到很惊喜,这是朝着称为 Successor ML 的方向发展的一部分。这似乎是 SML/NJ 和 MLton 之
llvm 有一个 MachineVerifier channel ,它根据不同的参数检查 MachineFunction 的正确性,例如: active 、死基本 block 、正确的寄存器类 等。最
所以我在使用 Switch 语句时遇到问题,当我将它与范围一起使用时,我在控制台中收到此“ fatal error :范围结束索引没有有效的后继者”。 var ArrayBytes : [UInt8]
树节点包含 3 个指针 *left、*right 和 *Successor。 Struct node{ int data; struct node *left; stru
我正在尝试实现 D* Lite和 LPA*算法(均由 Sven Koenig 提出),我很难理解每个节点包含的前驱和后继列表的概念。我尝试在各种来源寻找答案,但找不到确定的答案。 谁能帮我解决一下?
标题总结起来,我有一个包含节点的数组,它的顺序继承者我需要实现一个子程序来找到 O(h) 中任何给定节点的父节点 没有给出左右指针 最佳答案 我不确定我是否正确理解了您的问题,BST 中的有序后继仅表
任何人都可以帮我将这个 for 循环更新到 swift 3.0.帮助赞赏。谢谢! for var index = trimmedString.startIndex; index (start: ind
我是一名优秀的程序员,十分优秀!