我知道在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)
Method
duck-types Proc
,所以你甚至可以Proc
在Method
s中存储简单的s,Hash
并且不需要区分它们,因为它们都以相同的方式被调用:
hash['h'] = -> { puts 'Hello' }
hash['h'].()
# Hello
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2024 次 |
最近记录: |