class MyClass
def fun
a = 2
b = 5
yield(a,b)
end
def self.fun2
puts self
end
end
m = 1
n = 2
mine = MyClass.new
mine.fun {|m| puts "m = #{m} n = #{n}"}
这里我故意与yield的参数数量不匹配,输出是
test.rb:16: warning: multiple values for a block parameter (2 for 1)
from test.rb:5
m = 25 n = 2
这25来自哪里?
答案 0 :(得分:2)
我怀疑你在1.8.x
。
在这种情况下,m
将为[a, b]
。这相当于[2, 5]
。
[2, 5].to_s
# => "25"
"m = #{[2, 5]} n = #{2}"
# => "m = 25 n = 2"
答案 1 :(得分:0)
25来自a
,b
作为数组传递给m
。
当你puts
时,这是你在Ruby 1.8中得到的输出。
您也可以尝试puts "m = #{m.inspect}...."
或puts "m = #{m.class.to_s}"