我有以下代码:
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