这个ruby函数如何返回任何东西?

时间:2014-12-05 01:04:09

标签: ruby

我正在处理遗留的ruby代码,我不明白这是如何工作的。这个功能是:

    def determine_caller(host)
      if host["name"] =~ /special/
        method(:call_special)
      else
        method(:call_normal)
      end
    end

稍后会调用该方法:

caller = determine_caller(host_name)

程序最终使用调用者作为变量,因为它在另一个类中运行一个方法。 call_specialcall_normal是程序中稍后的方法。

我相信这是定义一种发送到另一种方法的方法,以便以后可以根据需要调用该方法(call_specialcall_normal),但我不明白{{{ 1}}返回任何内容。我认为determin_caller关键字调用了方法本身,但这不是正确的,至少我是如何理解我正在查看的程序。

2 个答案:

答案 0 :(得分:2)

简单的答案,没有进入ruby对象模型或任何东西,是方法中的最后一个语句总是返回。因此,如果调用者名称特殊而不是返回当使用这些参数调用方法'method'时返回的值

答案 1 :(得分:1)

Object#method方法返回Method。它没有任何东西。 (如果确实如此,那么method将是一个令人难以置信的糟糕名称。)

BTW:method不是关键字,determine_caller不是函数。它们都是方法。