Swift IF语句问题 - 一元运算符错误

and*_*cl1 -2 xcode ios swift

代码下面的swift有错误,我假设我不能在'if'语句中使用比较运算符...?

我收到错误

如果我尝试使用&&或||,则"一元运算符不能与其操作数分离" 在第一个'else'声明之后.

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
        if (row < 8)
        {
            self.pickerLabel.text = "Too cold";

        }
        else if(row >= 8 && <= 10) // Error occurs here...
        {
            self.pickerLabel.text = "Just right";
        }
        else if(row == 12)
        {
            self.pickerLabel.text = "Too warm";
        }
        else
        {
            view.backgroundColor = UIColor.blueColor();
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否有解决方案可以让我解决任何人都知道的错误?

谢谢.

Dun*_*n C 6

欢迎来到Stack Overflow.

你很亲密

该行应为:

else if row >= 8 && row <= 10 // No more error
Run Code Online (Sandbox Code Playgroud)

(注意,if表达式周围不需要括号)

根据操作顺序,在逻辑"AND"(&&)之前评估不等式.正如Martin在他的评论中指出的那样,逻辑"AND"和其他逻辑运算符是Swift中的"短路"运算符,就像它们在C中一样.

如果逻辑AND左侧的表达式为false,则表达式的下一部分根本不会被计算,因为您可以确定整个表达式都是false.

编辑:

使用swift case语句是一个很好的情况,因为它允许使用范围.

编辑#2:

你缺少对row = 11的处理.


mat*_*att 6

如果没有<=左侧的明确引用,则无法使用.正如您所知,简单的方法是:

if row >= 8 && row <= 10 
Run Code Online (Sandbox Code Playgroud)

然而,用于测试"中介性"的Swift习语是:

if (8...10).contains(row)
Run Code Online (Sandbox Code Playgroud)

更加惯用,你应该使用switch语句:

switch row {
case 0..<8: //...
case 8...10: //...
case 12: //...
default: //...
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你已经遗漏了11个(也许是故意的).