将以下代码视为示例:
这个有效
$conn = new mysqli('host', 'user', 'password', 'database');
$conn->query($myQuery);
但是当转入如此部分为三元运算符时
i = 0
flag = false
while i < 10
flag = true
if flag
i+=1
else
break
end
end
我收到了这个错误:
i = 0
flag = false
while i < 10
flag = true
if flag ? i+=1 : break
end
我知道这段代码缺乏逻辑,但目前的例子是我提出的最好的例子,以向您展示我遇到的情况。
答案 0 :(得分:3)
您的代码中存在语法问题。您无法在三元运算符if
中使用?:
,如代码行中所示if flag ? i+=1 : break
以下是编写代码的一种方法:
我已经自由修改代码,以便说明可以使用break
。
i = 0
flag = true
while i < 10
flag = false if i > 5
flag ? i+=1 : break
end
p i
#=> 6
答案 1 :(得分:2)
你不应该在这里使用break
三元组。它使得难以阅读的代码。人们通常不会期望表达式中的控制流关键字。实际上,看着它,不清楚为什么你甚至想使用三元。它的两个分支是完全不相关的。
如果您在清除紧凑代码后再考虑使用早期中断。像这样:
while i < 10
keep_processing = compute_flag # your logic here
break unless keep_processing
i += 1
end