睡觉直到红宝石中的情况属实
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了睡觉直到红宝石中的情况属实相关的知识,希望对你有一定的参考价值。
在某些条件成立之前,Ruby有没有更好的方法可以睡觉?
loop do
sleep(1)
if ready_to_go
break
end
end
答案
until
可以是一个声明修饰符,导致:
sleep(1) until ready_to_go
你将不得不在另一个线程改变ready_to_go
的线程中使用它,否则你将挂起。
while (!ready_to_go)
sleep(1)
end
与此类似,但是,再次,你需要一些东西切换ready_to_go
或你挂。
你可以使用:
until (ready_to_go)
sleep(1)
end
但我从来没有像这样使用until
。实际上我几乎从不使用它,更喜欢等效的(!ready_to_go)
。
另一答案
您可以使用waitutil
中描述的http://rubytools.github.io/waitutil/ gem,例如:
require 'waitutil'
WaitUtil.wait_for_condition("my_event to happen",
:timeout_sec => 30,
:delay_sec => 0.5) do
check_if_my_event_happened
end
另一答案
def sleep_until(time)
time.times do
break if block_given? && yield
sleep(1)
end
end
用法:
sleep_until(18)till_i_die
另一答案
我喜欢这种形式,因为它很简单,只有在测试完成条件后才需要睡眠:
begin
ready_to_go = do_some_action
end until ready_to_go or not sleep 1
以上是关于睡觉直到红宝石中的情况属实的主要内容,如果未能解决你的问题,请参考以下文章