我在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?
答案 0 :(得分:1)
不,你没有做错任何事。
在Ruby中,所有内容都会返回一个值。甚至是定义类或方法的动作。 IRB认为,通过向您显示您对class Fixnum
的回复价值,它会有所帮助。但是,它并不是非常有用,特别是因为您没有使用它或将其分配给变量。
正如其他评论者指出的那样,您的教程是针对与您正在使用的Ruby略有不同的版本编写的,因此演练稍有不妥。
如果对您来说不是太麻烦,那么您应该升级到最新的Ruby,因为自2.0.0版以来语言的功能,稳定性和性能都有了很大提高。