我正在使用遗留的 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
),但我不了解 determin_caller
如何返回任何内容。我认为 method
关键字调用了方法本身,但这是不对的,至少我是如何理解我正在查看的程序的。
最佳答案
简单的答案是,无需深入研究 ruby 对象模型或其他任何东西,就是方法中的最后一条语句总是被返回。因此,如果调用者的名字是特殊的,则返回使用这些参数调用方法“方法”时返回的任何值
关于ruby - 这个 ruby 函数如何返回任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307114/