Ruby 编写自己的迭代器

上一篇 / 下一篇  2011-01-23 19:44:32 / 个人分类:Ruby

def factorial (count, &block)
  value=1
  1.upto(count) do |i|
    value =value*i
    block.call(i,value)
  end
end
factorial(5) do |i,sum|
  puts "factorial(#{i})=#{sum}"
end

输出:
factorial(1)=1
factorial(2)=2
factorial(3)=6
factorial(4)=24
factorial(5)=120

所以其实这面,i,valu传给i,sum

# store the input block
class MathFact
  def initialize(&block)
    @block=block
  end
  def factorial(max)
    value=1
    1.upto(max) do |i|
      value=value*i
      @block.call(value)
    end
  end
end
the_value =MathFact.new do |count|
  puts "Current value is #{count}"
end
the_value.factorial(5)
输出结果是什么?

TAG:

 

评分:0

我来说两句

Open Toolbar