Ruby Proc 应用实例
=== Ruby Proc 应用实例 ===
=== created by yl 2011.02.11 ===
def index
@users = []
#将 :yy_name 传递给test_proc m_name参数;
#将 :a => 1, :b => 2由Ruby自动组合为Hash后传递给test_proc *arg参数;
#将 do .. end 间的程序块传递给 test_proc &proc参数,类型为Proc,
# 程序块需要外界传递一个参数(p,也可设置多个参数),该程序块不会马上执行;
# 只有当调用 proc.call(传递给p的值)时能真正执行。
#
#注意:Ruby允许在程序块执行中访问程序块之外现有的变量或数据。
test_proc :yy_name, :a => 1, :b => 2 do |p|
puts @users.size
puts p.class.name
p.each do |a|
puts a.class.name
a.each{|k, v| puts "#{k} : #{v}"} if a.is_a?(Hash)
end
end
end
private
def test_proc m_name, *arg, &proc
puts m_name
puts proc.class.name
proc.call(arg)
end
== puts msg ==
yy_name
Proc
0
Array
Hash
a : 1
b : 2