将原始数据类型的引用传递给ruby中的函数

时间:2014-03-06 11:12:33

标签: ruby

默认情况下,ruby传递原始值的副本和对象类型的引用。如何将primitive类型变量(例如:整数,浮点)的引用传递给函数?

2 个答案:

答案 0 :(得分:4)

Ruby不通过引用传递参数:

def change(x)
  x = 2  # this assigns to a local variable 'x'
end

a = 1
change(a)
a #=> 1

您可以改为传递可变对象,例如哈希“包含”整数:

def change(h)
  h[:x] = 2
end

h = {x: 1}
change(h)
h[:x] #=> 2

答案 1 :(得分:3)

Ruby不能那样工作。没有指针,如果这是你的意思和它。参数由 value 传递,但这些值本身就是对内存中对象的引用。

你所谓的“原语”(例如值1)实际上是Ruby中的不可变对象,因此指向它们是没有意义的。传递包含该对象的变量是可行的方法。

我很想知道你想要达到的目标。