Ray's playground

 

Containers, Blocks, and Iterators(Chapter 4 of Programming Ruby)

1 def three_times
2   yield
3   yield
4   yield
5 end
6 three_times { puts "Hello" }


inject
1 [1,3,5,7].inject(0) {|sum, element| sum+element} # => 16
2 [1,3,5,7].inject(1) {|product, element| product*element} # => 105
3 
4 [1,3,5,7].inject {|sum, element| sum+element} # => 16
5 [1,3,5,7].inject {|product, element| product*element} # => 105

 

 

yielder
 1 triangular_numbers = Enumerator.new do |yielder|
 2   number = 0
 3   count = 1
 4   loop do
 5     number += count
 6     count += 1
 7     yielder.yield number
 8   end
 9 end
10 
11 5.times { puts triangular_numbers.next }
12 1
13 3
14 6
15 10
16 15

 

 

1 def n_times(thing)
2  lambda {|n| thing * n }
3 end
4 
5 p1 = n_times(23)
6 p1.call(3# => 69
7 p1.call(4# => 92
8 p2 = n_times("Hello ")
9 p2.call(3# => "Hello Hello Hello "

 

 

posted on 2010-06-28 12:38  Ray Z  阅读(156)  评论(0编辑  收藏  举报

导航