Swift中三元运算符使用break语句出现意外错误如何解决?
错误原因
Swift 中的三元运算符 A ? B : C 属于求值表达式,并非流程控制语句,它有两个强制约束:
- 问号、冒号后的两个操作数必须为同类型、有明确返回值的表达式
- 不允许使用
break/return/continue这类无返回值的流程控制关键字作为操作数
你写的number >= 11 ? break : print("hello")中break不符合三元运算符的语法要求,因此会触发编译报错。
可行解决方案
这类需要执行流程控制跳转的场景,本身就不适合用三元运算符实现,直接使用if条件分支就是最规范、可读性最高的写法,同时建议你修改自定义类的名称,避免和Swift标准库中自带的Double浮点类型冲突:
// 修改类名避免命名冲突 class NumberIncrementor { var number: Int = 0 init(_ number: Int) { self.number = number } func db() { for _ in 1...10 { self.number = self.number + 2 print(self.number) // 直接用if分支实现流程控制,符合Swift语法规范 if number >= 11 { break } else { print("hello") } } } } var m = NumberIncrementor(1) m.db()
如果一定要强行使用三元运算符(非常不推荐,仅做语法演示),可以把流程控制逻辑包裹到无返回值的闭包调用中,但这种写法可读性差,完全没有实用价值:
// 仅做语法演示,实际开发完全不建议这么写 number >= 11 ? { break }() : print("hello")
内容的提问来源于stack exchange,提问作者Levan Charuashvili
相关产品推荐
相关产品推荐

