ruby - 将方法应用于数组并将数组值作为键返回
问题描述
我想知道 ruby 是否有内置方法来执行以下操作。
从这个数组:
array = [:foo, :bar]
这个方法:
def content_for_key key
return :baz if key == :foo
return :qux if key == :bar
end
这个电话:
array.some_built_in_ruby_method(&:content_for_key)
我们得到:
{
:foo => :baz,
:bar => :qux,
}
解决方案
您可以使用map
将每个元素转换为一[key, value]
对:
array.map { |key| [key, content_for_key(key)] }
#=> [[:foo, :baz], [:bar, :qux]]
然后to_h
将嵌套数组转换为哈希:
array.map { |key| [key, content_for_key(key)] }.to_h
#=> {:foo=>:baz, :bar=>:qux}
或者您可以each_with_object
在遍历数组时使用它来填充散列:
array.each_with_object({}) { |key, hash| hash[key] = content_for_key(key) }
#=> {:foo=>:baz, :bar=>:qux}
推荐阅读
- ios - 在 iOS 应用程序中传递用户设置
- javascript - 输入范围滑块卡在 Firefox 中
- android - 禁用Android Studio中的所有按钮并再次启动程序
- angular - Ngrx 存储管理多个对象列表
- matlab - Matlab - 一种更好的散点热图插值方法
- postgresql - plpgsql动态插入表名作为变量和数组变量在where子句中
- javascript - vue-cli3 eslint vue/script-indent 与编译器冲突
- c# - ReSharper 似乎不尊重 .editorconfig
- c++ - 使用枚举参数重载模板时 MSVC 编译器错误
- java - 使用 glide 将图像插入 ArrayList