我基本上是一个java开发人员。我在红宝石工作了大约一年。与 java 不同,Ruby 是一种纯面向对象的编程语言。这里有一个疑问。是传值还是传引用?Java 作为按值传递工作:“在传递原语时,我看到值被复制并传递给方法。但在对象的情况下,引用被复制并传递给方法。引用包含对象的位置在堆中。在方法调用过程中,只传递了对象的位置。因此不会创建重复的对象。修改相同的对象。
但是当我尝试下面的 ruby 代码片段时,我得到的结果与在 Java 中得到的结果相同:“在方法调用期间,数字像原语一样工作(就像在 java 中一样),而数组像在 java 中一样像完美引用一样工作”。现在,我很困惑。如果 ruby 中的所有内容都是对象,那么为什么在方法调用期间数字对象会重复?
class A
def meth1(a)
a = a+5
puts "a inside meth1---#{a}"
end
def meth2(array)
array.pop
puts "array inside meth2---#{array}"
end
end
obj1 = A.new
aa=5
obj1.meth1(aa)
puts "aa-----#{aa}"
arr = [3,4,5]
obj1.meth2(arr)
puts "arr---#{arr}"
结果:
内甲1---10
啊-----5
meth2内的数组---34
arr---34