我为什么要在Ruby中使用它?

时间:2015-04-06 20:30:15

标签: ruby

我在Ruby中这样做:

 irb(main):001:0> class Fixnum
 irb(main):002:1>   define_method(:previous) do
 irb(main):003:2*     self.-(1)
 irb(main):004:2>   end
 irb(main):005:1> end

当我按回车键时,我明白了:

=> #<Proc:0x007f90a18074e0@(irb):2 (lambda)>
irb(main):006:0> 

显然,我应该得到=&gt;:之前但我得到了上述内容。代码仍然有效。当我进入:

irb(main):006:0> 3.previous()

我明白了:

=>2

我做错了吗?我该怎么办才能获得=&gt;:previous?

1 个答案:

答案 0 :(得分:1)

不,你没有做错任何事。

在Ruby中,所有内容都会返回一个值。甚至是定义类或方法的动作。 IRB认为,通过向您显示您对class Fixnum的回复价值,它会有所帮助。但是,它并不是非常有用,特别是因为您没有使用它或将其分配给变量。

正如其他评论者指出的那样,您的教程是针对与您正在使用的Ruby略有不同的版本编写的,因此演练稍有不妥。

如果对您来说不是太麻烦,那么您应该升级到最新的Ruby,因为自2.0.0版以来语言的功能,稳定性和性能都有了很大提高。