gpt4 book ai didi

ruby - 方法调用的工作原理

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

如果我调用方法 a 一次,它只会调用外部方法。当我第二次调用它时,它调用了内部方法。

class A
def a
puts "outside method"
def a
puts "inside method"
end
end
end

A.new.a # => outside method
A.new.a # => inside method

你能解释一下它是如何工作的吗?

最佳答案

原因是嵌套方法总是应用于包含类。第二个方法将添加到 A 类,因为它是第一个方法的包含类。

但是,它只会在它的主体代码被求值时被添加,并且它会在您第一次调用外部方法时被求值。

class Test
def foo
puts "outside method"
def bar
puts "inside method"
end
end
end

test = Test.new
test.methods - Object.methods # => [:foo]
test.foo
test.methods - Object.methods # => [:foo, :bar]

在 ruby​​ 中,在类中定义同名方法两次将覆盖第一个版本。

class Test
def foo
"first version"
end

def foo
"second version"
end
end

test = Test.new
test.foo # => "second version"

因此,在第一次执行A#a之后,内部实现仍然存在。

关于ruby - 方法调用的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32823828/

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