【发布时间】:2020-11-02 05:41:56
【问题描述】:
假设我有一个函数,它在将用户数据与其 id 映射后返回一个哈希值。 像这样 -
def user_data(u_data)
u_data.map { |u| [u['id'], u] }.to_h
end
如何在此代码块中使用 tap 方法来实现相同的功能?谢谢
【问题讨论】:
-
tap在这里没有任何意义。为什么你认为会?这是家庭作业吗? -
如果我错了请纠正我......这会创建一个数组并创建一个哈希。那就是我想使用 {}.tap 顺便说一句只是想了解我们如何在运行中使用 .tap(我对 ruby 很陌生)
-
听起来您对
#tap的工作原理不熟悉,您是在寻求解释吗?你的问题真的没有意义。这就像在问,“我如何用餐巾纸做三明治”?当然,三明治店会在您点餐时为您提供两者,但餐巾纸与三明治制作并不真正相关。 -
这会创建一个键/值对数组(即数组数组),然后使用
#to_h将其转换为单个哈希。你也可以说u_data.each_with_object({}) { |u, h| h[u['id']] = u }来得到同样的结果。你可以说{}.tap { |h| u_data.each { |u| h[u['id']] = u } },但这只会让阅读代码的人想知道你想做什么以及为什么使用#tap来做这件事。 -
这就是答案@muistooshort,有很多方法可以通过修改它们的键/值将元素从一个对象映射到另一个对象,而点击就是其中之一。
标签: ruby dictionary hash