2

我有以下代码:

def mymethod(a)
  a.replace("a")
end

mystring = "b"

mymethod(mystring) 

p mystring # => "a"

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

那可能吗?

4

2 回答 2

7

简短的回答:没有。

长答案:不,这是不可能的。Integer 是一种基本类型,足以没有状态(和状态修改操作)。对整数的每个操作都会生成一个新整数。

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

于 2013-01-03T12:55:12.120 回答
1

-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
于 2017-08-12T09:52:02.170 回答