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

时间:2015-05-16 14:13:48

标签: ios xcode 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();
        }
    }

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

感谢。

5 个答案:

答案 0 :(得分:6)

欢迎使用Stack Overflow。

你关闭了。

该行应为:

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

(请注意,你不需要在if表达式周围使用括号)

根据操作顺序,在逻辑&#34; AND&#34;之前评估不等式。 (安培;&安培)。正如马丁在他的评论中指出的那样,合乎逻辑的&#34; AND&#34;其他逻辑运算符是&#34;短路&#34; Swift中的运算符就像他们在C中一样。

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

编辑:

使用swift case语句会很好,因为它允许使用范围。

编辑#2:

您缺少对row = 11的处理。

答案 1 :(得分:6)

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

if row >= 8 && row <= 10 

然而,用于测试的Swift成语&#34;介意&#34;是:

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

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

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

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

答案 2 :(得分:2)

试试这个:

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

答案 3 :(得分:1)

我还建议你在这种情况下总是使用括号来进一步明确。

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

答案 4 :(得分:0)

试试这个:

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