如何在Swift的范围内使用负数?

web*_*ets 8 operators switch-statement negative-number swift

我有以下代码:

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
        }
Run Code Online (Sandbox Code Playgroud)

我也试过了case -1000...-10:.两者都得到同样的错误! Expected expression after unary operator.

我真正想做的是case <= -10:,但如果没有得到这个错误,我无法弄清楚如何做到这一点Unary operator cannot be separated from its operand.

我不明白的是什么?

Mar*_*n R 10

在开关情况的上下文中,a ... b是"闭合间隔"并且开始必须小于或等于间隔的结束.加号或减号必须用...空格(或括号中的数字)分隔,所以两者都是

case -10000...(-10):
case -10000 ... -10:
Run Code Online (Sandbox Code Playgroud)

工作.

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

case let x where x <= -10:
Run Code Online (Sandbox Code Playgroud)

  • @webmagnets:在文档的"Where"部分:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html:*"一个switch case可以使用where子句来检查其他条件..."* (2认同)