我只需要运行一次以下逻辑,因为这将被放入循环中。我已经宣布了许多变量和方法,这让我不知所措,所以这将加快我个人级别的调试速度。
$just_once = 1 if $just_once.nil?
if $just_once == 1
p "Its PASSING!!"
$just_once = 2
end
Methinks 5行太多了。应该有办法将其减少到只有2-3行甚至1。
答案 0 :(得分:2)
执行以下操作
$just_once ||= 1
p "Its PASSING!!" if $just_once == 1 && $just_once += 1
更新正如@ Tin Man告诉的那样。
$just_once ||= 1
if $just_once == 1
p "Its PASSING!!"
$just_once += 1
end
答案 1 :(得分:2)
这并不像其他答案那么短,但这就是我为了保持可读性而编码的方式:
if $just_once.nil? || $just_once == 1
p "Its PASSING!!"
$just_once = 2
end
为了学术兴趣,这里有一个单行:
p "Its PASSING!!" and $just_once = 2 if $just_once.nil? || $just_once == 1
(田人,请原谅我的罪过:)。
最后,基于mu的评论太短了:
p "Its PASSING!!" and $just_once = true if !$just_once
答案 2 :(得分:1)
这有效:
$just_once = 1 if $just_once.nil?
p "Its PASSING!!" if $just_once == 1 && $just_once += 1
不确定是什么,因为你没有解释你的最终目标是什么。
答案 3 :(得分:1)
方便的事实:
nil.to_i
为零。1.to_i
是1
。==
非常乐意与nil
和1
进行比较。这允许您隐藏to_i
调用背后的条件逻辑:
if $just_once == 1
p "Its PASSING!!"
$just_once = $just_once.to_i + 1
end
另一个方便的事实是nil
是假的,所以你可以使用布尔值而不是计数器:
if !$been_here_already
p "Its PASSING!!"
$been_here_already = true
end
答案 4 :(得分:1)
这个怎么样?
(p "it's passing"; $just_once = true) if (!$just_once)
"it's passing"
=> true
(p "it's passing"; $just_once = true) if (!$just_once)
=> nil