ruby - Ruby if inside map 传递哈希
问题描述
我有一种方法可以遍历哈希,.map
以创建另一个哈希作为结果。
def assigned_task_list
assigned_tasks.map do |issue|
{
key: issue.key,
desired_time_to_resolution: issue.customfield_14777.dig('ongoingCycle', 'remainingTime', 'friendly'),
time_to_resolution: issue.customfield_10031.dig('ongoingCycle', 'remainingTime', 'friendly'),
name: issue.name
}
end
end
如何将 if 块放入此哈希中以决定放在那里desired_time_to_resolution:
或time_to_resolution
?
我的意思是如果像这样阻止:
if issue.customfield_14777.nil?
desired_time_to_resolution: issue.customfield_14777.dig('ongoingCycle', 'remainingTime', 'friendly')
else
time_to_resolution: issue.customfield_10031.dig('ongoingCycle', 'remainingTime', 'friendly')
end
解决方案
您不能在哈希内执行此操作,但您可以使用它Hash#merge
来更新哈希。
def assigned_task_list
assigned_tasks.map do |issue|
{
key: issue.key,
name: issue.name
}.merge(
if issue.customfield_14777.present?
{desired_time_to_resolution: ...}
else
{time_to_resolution: ...}
end
)
end
end
推荐阅读
- javascript - 箭头翻转功能半工作,几乎完整的 JS
- c++ - 将 c 风格的字符串解析为重载函数
- docker - 如何加载 openshift 注册表的内容
- selenium - 使用 Firefox 使用 Selenium 访问 Shadow DOM 树
- javascript - 点击时反应获取组件道具
- python - LunarLander 需要 Box2D,但是 pip 安装不起作用
- javascript - 基于输入的角度重新渲染数据表
- javascript - 从客户端JS中的服务器端(nodejs / express)获取变量的值
- salesforce - Salesforce 使用 apex 更新元数据记录
- python - 如何在 python 中使用 Telethon 发送带有标题的图像?