var = 1
$foo = Proc.new { var }
var = 2
def foo
$foo.call
end
p foo # => 2
def foo
proc { return }
end
foo.call
# => in `call': return from proc-closure (LocalJumpError)
def foo
proc { retry }
end
foo.call
# => in `call': retry from proc-closure (LocalJumpError)
# 没问题
(1..5).each { break }
# 在ruby 1.6.7, 1.8中没问题。在1.6.8中则发生异常
proc = Proc.new { break }
(1..5).each(&proc)
# 在ruby 1.6 中是 LocalJumpError
# 在ruby 1.8 中,再次运行each
proc = Proc.new { retry }
(1..5).each(&proc)
#=> retry from proc-closure (LocalJumpError)
Proc.new
Proc.new { ... }
def foo
pr = Proc.new
pr.call(1,2,3)
end
foo {|args| p args }
# => [1, 2, 3]
def foo
pr = Proc.new
pr.call(1,2,3)
end
foo {|args| p args }
# => [1, 2, 3]
这与下例相同
def foo
yield(1,2,3)
end
foo {|args| p args }
# => [1, 2, 3]
def foo
Proc.new
end
foo
# => -:2:in `new': tried to create Proc object without a block (ArgumentError)
from -:2:in `foo'
from -:4
# 判断西历的年是否为闰年的处理 leap = Proc.new do |year| year % 4 == 0 && year % 100 != 0 || year % 400 ==0 end p leap.call(2000) #=> true p leap[2013] #=> false p leap[2016] #=> true
double = Proc.new do |*args|
args.map{|i| i * 2 } # 所有元素乘两倍
end
p double.call(1, 2, 3) #=> [2, 3, 4]
p double[2, 3, 4] #=> [4, 6, 8]
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有