我正在 codewars.com 处理编码问题。这就是所述问题的答案:
class Conjurer
def self.conjure(name, lambda)
define_method name, lambda
end
end
我想阐明我阅读它的方式,并接受批评,这有助于我更好地理解这段代码的含义。
Conjurer
。name
和lambda
。define_method name, lambda
的含义。答案 0 :(得分:2)
define_method
创建一个名为name
的方法,并将其传递给块lambda
。因此,如果调用方法name
,它将运行变量lamba
表示的块。
self.conjure
允许您在类中定义方法:name
参数成为方法的名称,lambda
成为方法本身的主体。
答案 1 :(得分:2)
- 创建了课程
醇>Conjurer
。
是。更准确地说,Conjurer
类是打开的,这意味着它被打开以进行修改。在这种情况下,正在添加conjure
方法。
在Ruby中,您可以多次打开一个类:
class Conjurer
def self.something
# code
end
end
class Conjurer
def self.other_thing
# code
end
end
这与做
相同class Conjurer
def self.something
# code
end
def self.other_thing
# code
end
end
- 调用类的实例方法,表示类本身。
醇>
没有。它不是方法调用,而是方法定义。 def
关键字定义了一种新方法。 def self.
为Conjurer
类而不是Conjurer.new
实例定义了一种方法。
- 永久参数
醇>name
和lambda
。
几乎。参数为name
和lambda
,但它们不是调用的参数(有关参数和参数之间的差异,请参阅here),因为这不是方法call,是一种方法定义。
- 不确定
醇>define_method name, lambda
的含义。
define_method
是Ruby语言的一部分。它说的是,它定义了一个名为name
的方法,在调用时,执行lambda
。请参阅文档here。