代码下面的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();
}
}
是否有解决方法可以解决任何人都知道的错误?
感谢。
答案 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语句会很好,因为它允许使用范围。
您缺少对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();
}
}