gpt4 book ai didi

ruby - 别名方法会导致不同的对象?

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:06 26 4
gpt4 key购买 nike

def foo
"foo"
end

alias foo2 foo
puts "foo2: " + foo2.object_id.to_s
puts "foo: " + foo.object_id.to_s

在上面的示例中,我希望每个方法调用都看到相同的 object_id 输出,因为它们引用相同的方法。为什么我看到不同的 object_id?当您在 Ruby 中为方法设置别名时,别名不是指原始对象,而不是副本吗?

最佳答案

根据您的各种评论重新开始一个新的答案。

在示例代码中,您调用方法,而不是引用它。你想用

method(:foo)

实际获取方法本身而不是调用它的结果。

此外,object_id 不是测试两个方法是否相同的正确方法,因为 method(:foo) 每次都会返回一个新的 Method 对象。打个比方可能会更清楚,如果你打开同一个文件两次,你将有两个不同的文件句柄,即使底层文件是相同的。相反,我认为你想要:

method(:foo) ==  method(:foo2)

如您所见,您将看到它返回 true

关于ruby - 别名方法会导致不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624008/

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