gpt4 book ai didi

ruby - 为什么 'super' 在 Ruby 中是关键字而不是方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:21 24 4
gpt4 key购买 nike

在 ruby 中,superkeyword而不是一种方法。

为什么要这样设计?

Ruby 的设计倾向于实现尽可能多的方法;关键字通常保留给有自己语法规则的语言特性。然而,super 看起来和行为都像一个方法调用。

(我知道在纯 Ruby 中实现 super 会很麻烦,因为它必须从 calleruse a trace_func 中解析方法名称。这单独并不能阻止它成为一个方法,因为很多 Kernel 的方法不是在纯 Ruby 中实现的。)

最佳答案

它的行为有点不同,因为如果你不传递参数,所有当前参数(和 block ,如果存在的话)都会被传递......我不确定这将如何作为一种方法工作。

举一个比较人为的例子:

class A
def example(a, b, c)
yield whatever(a, b) + c
end
end

class B < A
def example(a, b, c)
super * 2
end
end

我不需要处理 yield ,也不需要将参数传递给 super。在您特别想要传递不同参数的情况下,它的行为更像是一个方法调用。如果您不想传递任何参数,则必须传递空括号 (super())。

它与方法调用的行为完全不同。

关于ruby - 为什么 'super' 在 Ruby 中是关键字而不是方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454382/

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