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