box-o-sand/oldstuff/RubyFun/cookbook/007/02.rb

31 lines
635 B
Ruby
Raw Normal View History

2011-10-07 02:24:01 +00:00
require 'pp'
2011-10-07 02:13:36 +00:00
def call_twice
2011-10-07 02:17:11 +00:00
puts "Calling your block."
ret1 = yield("very first")
puts "The value of your block: #{ret1}"
2011-10-07 02:13:36 +00:00
2011-10-07 02:17:11 +00:00
puts "Calling your block again."
ret2 = yield("second")
puts "The value of your block: #{ret2}"
2011-10-07 02:13:36 +00:00
end
2011-10-07 02:17:11 +00:00
call_twice do |which_time|
puts "I'm a code block, called for the #{which_time} time."
which_time == "very first" ? 1 : 2
end
2011-10-07 02:24:01 +00:00
class Hash
def find_all
new_hash = Hash.new
each { |k,v| new_hash[k] = v if yield(k, v) }
new_hash
end
end
squares = {0=>0, 1=>1, 2=>4, 3=>9}
print "squares = "
pp squares
(squares.find_all { |key, value| key > 1 }).each { |k,v| puts "#{k}: #{v}" }