在Ruby中替换引用的Integer值,如String#replace

我有以下代码:

def mymethod(a) a.replace("a") end mystring = "b" mymethod(mystring) p mystring # => "a" 

但我想用Integer执行相同的操作

那可能吗?

简答:不。

答案很长:不,这是不可能的。 Integer是一个类型原语,足以不具有状态(和状态修改操作)。 整数上的每个操作都会生成一个新整数。

可能 ,如果您下降到C级别,您可以就地修改基础值。 但我不确定。 无论如何,这似乎是一种矫枉过正和错误的事情。

-1表示“做错事”。 这可能是一个非常合理的问题 – 我现在需要这样做:多个对象需要共享计数器。

在我看来,最好的方法是创建一个包装类并将整数作为实例变量:

 class Counter def initialize(i = 0) @i = i end def get @i end def set(i) @i = i end def inc(delta = 1) @i += delta end end