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 中高效处理大量文件

ruby - cucumber 。跳过所有场景,如果一个失败

ruby-on-rails - Ruby on Rails : How to implement search function

ruby - 优雅地从数组创建哈希

algorithm - 为 Rabin-Karp 字符串搜索算法找到一个好的哈希函数

algorithm - 负载系数0.75是什么意思?

perl - 如何为散列制造病态 key ?

ruby-on-rails - 参数不会传入子类

json - 在 Perl 中,如何打包散列并将其解包回其原始状态?

performance - MD* 或 SHA-* 中是否有任何 "out of band"哈希值?