我正在处理遗留的ruby代码,我不明白这是如何工作的。这个功能是:
def determine_caller(host)
if host["name"] =~ /special/
method(:call_special)
else
method(:call_normal)
end
end
稍后会调用该方法:
caller = determine_caller(host_name)
程序最终使用调用者作为变量,因为它在另一个类中运行一个方法。 call_special
和call_normal
是程序中稍后的方法。
我相信这是定义一种发送到另一种方法的方法,以便以后可以根据需要调用该方法(call_special
或call_normal
),但我不明白{{{ 1}}返回任何内容。我认为determin_caller
关键字调用了方法本身,但这不是正确的,至少我是如何理解我正在查看的程序。
答案 0 :(得分:2)
简单的答案,没有进入ruby对象模型或任何东西,是方法中的最后一个语句总是返回。因此,如果调用者名称特殊而不是返回当使用这些参数调用方法'method'时返回的值
答案 1 :(得分:1)
Object#method
方法返回Method
。它没有任何东西。 (如果确实如此,那么method
将是一个令人难以置信的糟糕名称。)
BTW:method
不是关键字,determine_caller
不是函数。它们都是方法。