Actions
Feature #19094
closed`sleep(nil)` vs `sleep()` and replicating the default implementation.
Feature #19094:
`sleep(nil)` vs `sleep()` and replicating the default implementation.
Description
> sleep(nil)
(irb):1:in `sleep': can't convert NilClass into time interval (TypeError)
However, I feel that this makes implementing a compatible sleep method a little difficult.
def sleep(time = nil)
if time
sleep_some(time)
else
sleep_forever
end
end
Can we consider allowing sleep(nil) and sleep(false) to be the same as sleep() to simplify this behaviour?
Otherwise, it's hard to proxy (e.g. fiber scheduler, or even just a plain old variable argument).
e.g.
class Sleeper
def initialize(time = nil)
@time = time
end
def sleep
Kernel::sleep(@time) # Hard to get the behaviour of `sleep()` here without explicitly handling/checking.
end
end
Actions