如何在Swift中使用负数范围?

14

我有以下代码:

switch self.score
        {
        case 1:
            self.score = self.score - 2
        case -10...-10000: // ! Expected expression after unary operator
            println("lowest score")
            self.score = -10
        default:
            self.score = self.score - 1
        }

我还尝试了 case -1000...-10:,但是会得到相同的错误提示 !在一元运算符后面期望表达式

我真正想做的是 case <= -10:,但我无法解决这个问题,否则就会出现这个错误提示 一元运算符不能与其操作数分离

我没有理解哪些地方出了问题?


2
或许尝试用括号包裹起来? - Rufflewind
很遗憾,那也不起作用。 - webmagnets
1个回答

19
在switch case的上下文中,a ... b表示一个“闭区间”,并且起始点必须小于等于终止点。同时加号或减号必须与...之间有一个空格(或被括号包裹的数字),因此两者之间应该像这样写:
case -10000...(-10):
case -10000 ... -10:

工作。

case <= -10: 可以使用 Swift 的 "where 子句" 编写:

case let x where x <= -10:

Swift 4 开始,这可以被写成“单侧区间表达式”:

case ...(-10):

2
在文档的“where”章节中:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html :“switch case可以使用where子句来检查其他条件……” - Martin R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接