1, "b" => 2, "c" => 3, "d" => 4} 由于哈希现在是有序的,我可能想要从 a 到 b 或从 c 到 d。问题是我无法执行 d[0.-6ren">
gpt4 book ai didi

ruby - 如何在 Ruby 1.9 中只获取有序哈希的一个子集?

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:38 25 4
gpt4 key购买 nike

让我们举个例子:

d = {"a" => 1, "b" => 2, "c" => 3, "d" => 4}

由于哈希现在是有序的,我可能想要从 ab 或从 cd。问题是我无法执行 d[0..1]d[2..3]

不过我可以这样做:

irb > d.to_a[0..1]
=> [["a", 1], ["b", 2]]

...但这感觉很乱,我不想为这样的操作转换我的哈希值。

是否有更清洁的解决方案来处理这个问题?

# Holy Grail
irb > d[0..1]
=> {"a" => 1, "b" => 2}

我可以看到如何为自己编写这样的方法,但可能已经有一些原生的东西我可以使用...?

最佳答案

你可以这样做:

> a = {"a" => 1, "b" => 2, "c" => 3, "d" => 4}
> a.slice(*a.keys[0..1])
=> {"a" => 1, "b" => 1}

至少哈希没有被强制转换,但我认为它仍然不是很优雅。

关于ruby - 如何在 Ruby 1.9 中只获取有序哈希的一个子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com