娃娃鸭学Ruby-35、编写自定义的迭代器

自定义的迭代器

可调用一个与方法调用相关联的代码块

def twice
yield
yield
end

def sequence(n,m,c)
i=0
while(i<n)
yield m*i +c
i+=1
end
end

sequence(3,5,1){|y| puts y}
irb(main):008:0> sequence(3,5,1){|y| puts y}
1
6
11
=> nil

更复杂代码,
迭代器内部使用另一迭代器
def circle(r,n)
n.times do |i|
angle=Math::PI * 2*i /n
yield r*Math.cos(angle),r*Math.sin(angle)
end
end

def sequence(n,m,c)
i,s=0,[]
while(i<n)
y=m*i+c
yield y if block_given?
s<<y
i+=1
end
s
end

2011-4-19 14:59 danny
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值