ruby - 在散列中存储函数

标签 ruby hash

我知道在 Ruby 中你可以像这样创建 HashMap :

hash = {"name"=>"John"}

但是有没有可能有一个方法的 HashMap :

hash = {"v"=> show_version}

并且当调用 hash["v"] 来执行 show_version 函数,或者返回某种传递给某些特殊方法的指针时,执行来自哈希的函数?

我想要实现的是拥有方法的 HashMap ,而不是使用 case/when 构造,因为它对我来说看起来太冗长了。

最佳答案

不完全是这样,不。您需要获取方法的 Method 代理对象并将其存储在 Hash 中:

hash = { 'v' => method(:show_version) }

并且您需要调用方法对象:

hash['v'].()

Method duck-types Proc,因此您甚至可以将简单的 ProcMethod 一起存储在Hash 不需要区分它们,因为它们的调用方式相同:

hash['h'] = -> { puts 'Hello' }
hash['h'].()
# Hello

关于ruby - 在散列中存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27645773/

相关文章:

ruby - 为什么方法参数不适用于赋值?

ruby-on-rails - 如何将 Twitter 配置移出 Controller ? ( rails )

ruby-on-rails - Ruby 的 require 语句的漂亮版本?

Ruby 将特定的散列键映射到新的散列键

ruby-on-rails - 在 Model 类方法中指定当前抓取的记录

ruby-on-rails - 使用 Foreman 重启单个进程

html - href 属性中带有哈希的 anchor 正在打开一个新页面

ruby - .each_with_object ruby 解释?

c++ - 你如何散列一个字符串?我需要以某种方式将随机字符串转换为整数以将它们放入我的哈希表中

database - 使用谷歌应用引擎索引营业时间