我知道在 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
,因此您甚至可以将简单的 Proc
与 Method
一起存储在Hash
不需要区分它们,因为它们的调用方式相同:
hash['h'] = -> { puts 'Hello' }
hash['h'].()
# Hello
关于ruby - 在散列中存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27645773/