Ruby中在方法之前调用方法?
我是Ruby新手,我看到的方法定义如下:Ruby中在方法之前调用方法?,ruby,Ruby,我是Ruby新手,我看到的方法定义如下: def method_one puts "method 1" end class MyClass method_one def method_two puts "method 2" end end method\u one的使用方式让我想起了Python装饰器 c = MyClass.new c.method_two c = MyClass.new c.method_two 是 方法
def method_one
puts "method 1"
end
class MyClass
method_one
def method_two
puts "method 2"
end
end
method\u one
的使用方式让我想起了Python装饰器
c = MyClass.new
c.method_two
c = MyClass.new
c.method_two
是
方法1
方法2
我一直试图在web上的Ruby文档中搜索关于这个语法/语言特性的更多信息,但我不知道要搜索什么关键字
这叫什么?我觉得你有点误导;输出: 是
#
“方法2”
在类被加载之前,或者如果您在IRB中,则输入最后一个end语句,您将不会看到方法1
我建议研究一下ruby的initialize方法。我认为你有点误导;输出: 是
#
“方法2”
在类被加载之前,或者如果您在IRB中,则输入最后一个end语句,您将不会看到方法1
我建议研究一下ruby的initialize方法。我认为你有点误导;输出: 是
#
“方法2”
在类被加载之前,或者如果您在IRB中,则输入最后一个end语句,您将不会看到方法1
我建议研究一下ruby的initialize方法。我认为你有点误导;输出: 是
#
“方法2”
在类被加载之前,或者如果您在IRB中,则输入最后一个end语句,您将不会看到方法1
我建议研究ruby的初始化方法。TL;博士
这段代码并不像你想象的那样。不要做这种事
Ruby的顶级对象
Ruby允许您在类之外定义方法。这些方法存在于顶级对象上,您可以(通常)将其视为一种“包罗万象”命名空间。你可以看到各种各样的帖子,比如更多的细节,但你真的不需要在意
在您最初的帖子中,method_one只是顶层中定义的一个方法。因此,它可用于嵌套在顶级中的类和方法,例如MyClass
类中的方法
不管您怎么想,以下内容实际上并没有在MyClass上声明:方法\一个类或实例方法:
class MyClass
method_one
def method_two; end
end
相反,Ruby在类的定义过程中调用了顶级的::method\u one
,但它从来不会成为类方法(例如MyClass::method\u one
)或实例方法(例如MyClass.new.method\u one
)。可能有一些这样做的用例(例如打印调试信息、测试注入等),但这很容易混淆,容易出错,通常是要避免的,除非您有一个非常强大的用例
更好的选择
通常,当您在学术课之外看到类似的内容时,程序员可能打算执行以下操作之一:
class MyClass
method_one
def method_two; end
end
相反,Ruby在类的定义过程中调用了顶级的::method\u one
,但它从来不会成为类方法(例如MyClass::method\u one
)或实例方法(例如MyClass.new.method\u one
)。可能有一些这样做的用例(例如打印调试信息、测试注入等),但这很容易混淆,容易出错,通常是要避免的,除非您有一个非常强大的用例
更好的选择
通常,当您在学术课之外看到类似的内容时,程序员可能打算执行以下操作之一:
class MyClass
method_one
def method_two; end
end
相反,Ruby在类的定义过程中调用了顶级的::method\u one
,但它从来不会成为类方法(例如MyClass::method\u one
)或实例方法(例如MyClass.new.method\u one
)。执行此操作可能有一些用例(例如,打印调试信息,t