gpt4 book ai didi

Ruby - 按值或按引用传递

转载 作者:数据小太阳 更新时间:2023-10-29 09:03:37 25 4
gpt4 key购买 nike

我搜索过这个,似乎每个人都说 Ruby 总是按值传递,但这个简单的小例子是一个更大程序的子集,我有点困惑。

a = "J123"
b = a
a.slice!(0)
puts a
puts b

这显示

123
123

而且我不明白为什么“b”的值会发生变化。

最佳答案

因为ab都是指向同一个对象的指针。它们不是对象本身。在 Ruby 中只能将指针作为参数传递,并且指针是按值传递的。

这类似于 Java、JavaScript 和 Python,但不同于 C++、C#、Haskell 和 Scala。

以下示例中的区别很有趣:

def f(y)
y = 2
end
x = 1
f(x)
puts x # 1, not 2

如果 x 通过引用传递,它将打印 2

关于Ruby - 按值或按引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com