当我这样做时:
def hello(*args)
"Hello " + args.join(' ')
end
send( :hello, "gentle", "readers") #=> "Hello gentle readers"
是send
号召的吗?我明白了:
method(:hello).owner #=> Object
是否在Object
类或其实例上调用了它?
答案 0 :(得分:0)
你的方法:
send( :hello, "gentle", "readers") #=> "Hello gentle readers"
与:
相同self.send( :hello, "gentle", "readers") #=> "Hello gentle readers"
其中self
在这种情况下被定义为main
,它是内置的顶级对象。
这行代码:
p method(:hello).owner #=> Object
返回Object,因为您已在顶层定义了方法:hello
,这意味着它会被放入class Object
。
答案 1 :(得分:0)
没有显式接收器的方法调用:
main
假设一个隐式def hello(*args)
"Hello " + args.join(' ')
end
作为接收者,在这种情况下是Object
对象。
主环境中的方法定义:
main
假设它被定义为Object
上的实例方法。
由于/print
是/PRINT["Hello world";"blue";propety:{bold;italic}]
类的实例,因此方法定义和调用一起工作。