代码下面的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)
是否有解决方案可以让我解决任何人都知道的错误?
谢谢.
欢迎来到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语句是一个很好的情况,因为它允许使用范围.
你缺少对row = 11的处理.
如果没有<=左侧的明确引用,则无法使用.正如您所知,简单的方法是:
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个(也许是故意的).
| 归档时间: |
|
| 查看次数: |
1256 次 |
| 最近记录: |