Generating a Sequence of Numbers : yield « Method « Ruby






Generating a Sequence of Numbers


def fibonacci(limit = nil)
  seed1 = 0
  seed2 = 1
  while not limit or seed2 <= limit
    yield seed2
    seed1, seed2 = seed2, seed1 + seed2
 end
end

fibonacci(3) { |x| puts x }
# 1
# 1
# 2
# 3

fibonacci(1) { |x| puts x }
# 1
# 1

fibonacci { |x| break if x > 20; puts x }
# 1
# 1
# 2
# 3
# 5
# 8
# 13

 








Related examples in the same category

1.How do you reach the code in the block from inside the method?
2.execute the yield statement any number of times
3.yield method automatically detects any passed code block and passes control to it
4.You can pass data to code clocks used with methods simply by passing that data to the yield statement.
5.So not only can you pass arguments to a method, you can also pass code blocks - and the method can even pass arguments to that code block.
6.contain two yields, then call it with a block. It executes the block twice.
7.after yield executes, control comes back to the next statement immediately following yield.
8.yield with proc parameter
9.Write a simple function that returns members of the Fibonacci series up to a certain value.