变量值没有按预期变化

时间:2013-12-06 05:35:41

标签: ruby

我是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

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用puts(a.call,b.call,c.call)代替puts(a,b,c)来获取输出。但是你会得到“一个”,“两个”,“三个”作为输出

答案 1 :(得分:0)

根据本书的第10.12节,abc由于收益而被覆盖为Ruby 1.8中的整数1,2和3,但不是Ruby 1.9,它们仍被定义为lambda。但是,在任何一种情况下,您都应该看到一些输出。

以下是本书的摘录(假设这是合理使用):

enter image description here