有一个错误与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();
}
}