ruby - Why is `loop` not a keyword? What is the use case for `loop` without a block? -
i wondering why loop kernel method rather keyword while , until. there cases want unconditional loop, since loop, being method, slower while true, chose latter when performance important. writing true here looks ugly, , not rubish; loop looks better. here dilemma.
my guess is because there usage of loop not take block , returns enumerator. me, looks unconditional loop can created on spot, , not make sense create such instance of enumerator , later use it. cannot think of use case.
- is guess regarding wonder correct? if not, why
loopmethod rather keyword? - what use case enumerator created
loopwithout block?
only ruby's developers can answer first question, guess seems reasonable. second question, sure there use cases. whole point of enumerables can pass them around, which, know, can't while or for structure.
as trivial example, here's fibonacci sequence method takes enumerable argument:
def fib(enum) a, b = nil, nil enum.each a, b = b || 0, ? + b : 1 puts end puts "done" end now suppose want print out first 7 fibonacci numbers. can use enumerable yields 7 times, 1 returned 7.times:
fib 7.times # => 0 # 1 # 1 # 2 # 3 # 5 # 8 # done but if want print out fibonacci numbers forever? well, pass enumerable returned loop:
fib loop # => 0 # 1 # ... # (never stops) like said, silly example terrible way generate fibonacci numbers, helps understand there times—albeit perhaps rarely—when it's useful have enumerable never ends, , why loop nice convenience cases.
Comments
Post a Comment