【发布时间】:2013-05-03 16:03:15
【问题描述】:
我基本上是一名 Java 开发人员。我在红宝石工作了大约一年。与 java 不同,Ruby 是一种纯面向对象的编程语言。这里有一个疑问。是传值还是传引用? Java 作为按值传递工作:“在传递原语时,我看到值被复制并传递给方法。但在对象的情况下,引用被复制并传递给方法。引用包含对象的位置在堆中。在方法调用过程中,只传递了对象的位置。因此不会创建重复的对象。修改相同的对象。
但是当我尝试下面的 ruby 代码 sn-p 时,得到的结果与在 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}"
结果:
一个里面的meth1---10
aa-----5
meth2---34中的数组
arr---34
【问题讨论】:
标签: java ruby oop pass-by-reference pass-by-value