Swift IF语句错误-一元操作符错误



有一个错误与swift下面的代码,我想我不能使用比较运算符内的'if'语句…?

我收到错误

'一元操作符不能与其操作数分开',如果我尝试使用一个,,或者在第一个'else'语句之后|| on

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();
        }
    }

是否有一个工作,或解决方案,将得到我周围的错误,任何人都知道?

谢谢。

欢迎使用Stack Overflow

你接近。

这一行应该是:

else if row >= 8 && row <= 10 // No more error

(注意if表达式也不需要括号)

按照运算顺序,不等式在逻辑& & &;之前求值。(,,)。正如马丁在他的评论中指出的那样,合乎逻辑的其他逻辑运算符是"短路";

如果逻辑与运算左边的表达式为假,则表达式的下一部分根本不求值,因为可以确定整个表达式将为假。

<标题>编辑:

这将是使用swift case语句的好情况,因为它允许在case中使用范围。

<标题>编辑# 2:

您缺少row = 11的处理

如果左侧没有显式引用,则不能使用<=。正如你已经被告知的,简单的方法是:

if row >= 8 && row <= 10 

然而,Swift测试"between"的习惯用法是:

if (8...10).contains(row)

更习惯地说,你应该使用一个switch语句:

switch row {
case 0..<8: //...
case 8...10: //...
case 12: //...
default: //...
}

顺便说一下,您漏掉了11(可能是故意的)。

try this:

else if row >= 8 && row <= 10 

我还建议您在这样的情况下使用括号以增加清晰度。

else if (row >= 8) && (row <= 10)

试试这个:

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
    if (row < 8)
    {
        self.pickerLabel.text = "Too cold";
    }
    else if(row >= 8 && row <= 10) // Error occurs here...
    {
        self.pickerLabel.text = "Just right";
    }
    else if(row == 12)
    {
        self.pickerLabel.text = "Too warm";
    }
    else
    {
        view.backgroundColor = UIColor.blueColor();
    }
}

最新更新