睡觉,直到红宝石的情况属实

ccy*_*ccy 16 ruby

在某些条件成立之前,Ruby有没有更好的方法可以睡觉?

loop do 
  sleep(1)
  if ready_to_go
    break
  end
end
Run Code Online (Sandbox Code Playgroud)

the*_*Man 26

until 可以是一个语句修饰符,导致:

sleep(1) until ready_to_go
Run Code Online (Sandbox Code Playgroud)

你必须在另一个线程改变的线程中使用它,ready_to_go否则你将挂起.

while (!ready_to_go)
  sleep(1)
end
Run Code Online (Sandbox Code Playgroud)

与此类似,但是,再次,你需要一些东西来切换ready_to_go或你挂起.

你可以使用:

until (ready_to_go)
  sleep(1)
end
Run Code Online (Sandbox Code Playgroud)

但是我从来没有until像这样舒服地使用过.实际上我几乎从不使用它,更喜欢等效的(!ready_to_go).

  • 你只需要注意那些永远不会导致真实陈述的条件,否则你最终会陷入黑洞.我在编写汇编语言和C时学到了这一课,并且把我的机器锁得很糟糕我不得不拉电源线让它回到我的控制之下.几次.叹.:-) (2认同)