我是Ruby的新手,正在阅读Book of Ruby书籍。根据这本书,下面应该相应地将变量a,b,c的值更改为1,2,3,但值不会改变。
def xyz
puts('---xyz---')
x = 1
y = 2
z = 3
yield( x, y, z )
end
a = lambda{ puts "one" }
b = lambda{ puts "two" }
c = proc{ puts "three" }
myproc = proc{ puts("my proc") }
xyz{ |a,b,c| puts(a+b+c) }
puts( a, b, c ) #this should output 1,2,3 but it is not giving any output
提前致谢。
答案 0 :(得分:2)
使用puts(a.call,b.call,c.call)代替puts(a,b,c)来获取输出。但是你会得到“一个”,“两个”,“三个”作为输出
答案 1 :(得分:0)
根据本书的第10.12节,a
,b
和c
由于收益而被覆盖为Ruby 1.8中的整数1,2和3,但不是Ruby 1.9,它们仍被定义为lambda。但是,在任何一种情况下,您都应该看到一些输出。
以下是本书的摘录(假设这是合理使用):