加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在一行内遍历此哈希?

发布时间:2020-12-17 01:54:47 所属栏目:百科 来源:网络整理
导读:散列中的每个键都有一个值也是一个哈希值. ? ? {? ? ? 100 = {? ? ? ? 1 = 'ruby',? ? ? ? 2 = 'enumerables'? ? ? },? ? ? 50 = {? ? ? ? 3 = 'can',? ? ? ? 4 = 'cause'? ? ? },? ? ? 15 = {? ? ? ? 5 = 'occassional',? ? ? ? 6 = 'insanity'? ? ? }? ? }
散列中的每个键都有一个值也是一个哈希值.

? ? {
? ? ? 100 => {
? ? ? ? 1 => 'ruby',? ? ? ? 2 => 'enumerables'
? ? ? },? ? ? 50 => {
? ? ? ? 3 => 'can',? ? ? ? 4 => 'cause'
? ? ? },? ? ? 15 => {
? ? ? ? 5 => 'occassional',? ? ? ? 6 => 'insanity'
? ? ? }
? ? }

对于每个哈希对象,我想丢弃顶级键,并将其替换为嵌套哈希对象的键和值.

{
  1 => 'ruby',2 => 'enumerables',3 => 'can',4 => 'cause',5 => 'occasional',6 => 'insanity'
}

我有它工作,但我的方法使用合并!,并需要创建另一个哈希来存储值.我很想知道它是否可以在一行中完成.我试图使用reduce(),但无法使其工作.

解决方法

这有效:

hash.values.inject(&:merge)

编辑:另一个选项,使用reduce(与注入相同),并注意到tokland的注释,使用符号时会自动调用to_proc:

hash.values.reduce(:merge)

然后它变得简洁但非常易读.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读