我知道在Ruby中你可以像这样创建哈希映射:
hash = {"name"=>"John"}
但是有可能有方法的哈希映射:
hash = {"v"=> show_version}
当调用hash["v"]
执行show_version
函数,或者在传递给某个特殊方法的指针上返回某种类型时,从哈希执行函数?
我想要实现的是,有一个方法的哈希映射,而不是使用case/when
构造,因为它看起来太冗长了。
答案 0 :(得分:6)
不完全是这样,不。您需要获取该方法的Method
代理对象,并将其存储在Hash
中:
hash = { 'v' => method(:show_version) }
您需要call
Method
对象:
hash['v'].()
Method
鸭子类型Proc
,因此您甚至可以将Proc
与Method
一起存储在Hash
中,并且不需要区分它们,因为它们都被称为相同的方式:
hash['h'] = -> { puts 'Hello' }
hash['h'].()
# Hello