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

标签 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),但我不了解 determin_caller 如何返回任何内容。我认为 method 关键字调用了方法本身,但这是不对的,至少我是如何理解我正在查看的程序的。

最佳答案

简单的答案是,无需深入研究 ruby​​ 对象模型或其他任何东西,就是方法中的最后一条语句总是被返回。因此,如果调用者的名字是特殊的,则返回使用这些参数调用方法“方法”时返回的任何值

关于ruby - 这个 ruby​​ 函数如何返回任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307114/

相关文章:

ruby - oily_png ruby​​ gem 安装错误

ruby-on-rails - 验证失败时设计自定义消息

ruby-on-rails - ORM 如何将类/属性与​​表/字段相关联?

java - 获取 Java 并将其设置为 Ruby

mysql - 在为 RoR 应用程序在 MySQL 和 Amazon 的 SimpleDB 之间做出决定时,您需要考虑什么?

mysql - 按整数值分类和 COUNT() 的 sql 优化

ruby-on-rails - "We' 抱歉,但出了点问题。” Ubuntu 上的 Rails 应用程序、Apache 上、DigitalOcean 上的Passenger

ruby-on-rails - 我如何在 rake 中使用助手?

ruby-on-rails - 在 jruby 上安装 gem

ruby - 遍历xml结构判断某个文本节点是否存在