ruby - Ruby 通过调用方法创建哈希内容
问题描述
我有以下要构建哈希的方法:
方法:
def support_board
{ 'project' => { 'id' => '1234' } }
end
def security_board
{ 'project' => { 'id' => '4352' } }
end
def project_setup
{ 'customfield_12345' => 'None' }
end
预期哈希:
{
'fields' => {
'project' => { 'id' => '1234' },
'issuetype' => { 'id' => '4352' },
'customfield_12345' => 'None'
}
}
我试图这样做:
{
'fields' => {
support_board,
security_board,
project_setup
}
}
但这不是正确的语法,我在控制台中遇到了一些错误-unexpected tSTRING_DEND, expecting end-of-input
解决方案
您可以使用Hash#merge!
以下值合并:
{ "fields" => {} }.tap do |return_value|
return_value['fields'].merge!(support_board, security_board, project_setup)
end
# => {"fields"=>{"project"=>{"id"=>"1234"},
# => "issuetype"=>{"id"=>"4352"}, "customfield_12345"=>"None"}}
或者,在旧的 ruby 版本中,一次做一个:
[
support_board,
security_board,
project_setup
].each_with_object({'fields' => {}}) do |method_call, return_value|
return_value['fields'].merge!(method_call)
end
# => same as above
推荐阅读
- python - No gradients provided for any variable - LSTM autoencoder
- angular - 解决生产构建的角度 package.json 依赖项时的问题
- django - reconnecting-websocket.min.js:1 WebSocket 连接到 'wss://site.com/messages/user' 失败:
- python - 如何从 mpv/lua 启动 python 脚本
- javascript - node-tflite - 未找到 GLIBC_2.27(libtensorflowlite_c.so 需要)
- python - 为什么 pygame 在表面上绘图和保存时会增加图像文件的大小?
- javascript - GPlayer chrome 扩展 - 添加视频播放
- python - 检查列表的所有元素是否都在一个大的单个元素列表中
- prometheus - 如果第一个查询指标不存在,我可以将 OR 运算符分配给 Grafana 变量吗?
- r - 仅使用 R 中的某些值(拆分一半)的行向量中的平均分数