Ruby-是按引用还是按值分配参数?

我不明白为什么他们说 Ruby按值传递所有参数,同时以下代码证明了相反的情况:


class MyClass1

  @var1 = 123


  def get1

    @var1

  end


  def set1=value

    @var1 = value

  end

end


c1 = MyClass1.new

c1.set1 = 444

p c1.get1 # 444


def test1 mc

  mc.set1 = 999

end


test1 c1

p c1.get1 # 999

如果按值显示,它将打印出来444,而不是999。


繁星点点滴滴
浏览 559回答 3
3回答

慕运维8079593

同意100%。有趣的是,Chuck在此处使用的同一示例显示Ruby是按值传递(他的定义),而我将用来显示Ruby是按引用传递(我的定义)。将来,我将避免在Ruby中对按值传递/引用进行全面声明,这似乎会使人们更加困惑。

翻翻过去那场雪

是的,我完全理解为什么您会这样称呼。您对“按引用传递”的定义与现实世界中人们编程的方式更加相关。但不幸的是,我们被困在半个世纪的计算机科学文献中,并且整个教育系统仍然使用旧的定义,因此,我认为让人们知道“如果您阅读“通过引用”一词,可能不是在谈论Ruby。”
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby