我刚刚用Ruby解决了一些关于链表的任务。这很有趣,但它需要几行新行。因为如果我在某个函数中传递head
,并更改列表的头部,我必须从方法返回新的head
并将其重新分配给变量。
因为如果我有a
变量并将其传递给方法,请在a
剂量不变的情况下重新分配a
内部、外部:
it "dose not changes if reassign variable in method" do
a = [1,2]
def reasign array
array = [1]
array
end
assert_equal [1], reasign(a)
assert_equal [1,2], a
end
当然,我可以在Hash
或Array
中扭曲列表head
,并在更改对象中的某些内容时保存此Hash
。外部的变量仍指向对象。这行得通。但同样需要几行。
it "method changes the data into a object" do
a = [1,2]
def change_object object
object.push 3
object
end
assert_equal [1,2,3], change_object(a)
assert_equal [1,2,3], a
end
Ruby 中有没有办法使用类似 C 的指针或类似 PHP 的引用?
所有 ruby 变量引用本质上都是指针(但不是指针到指针(,用 C 的说法。
您可以改变一个对象(假设它不是不可变的(,因此引用它的所有变量都将指向同一个(现在变异的(对象。但是,更改变量引用的对象的唯一方法是直接赋值该变量 - 并且每个变量都是一个单独的引用;不能为具有两个名称的单个引用设置别名。