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