如何使用 Ruby 中的数字替换单个哈希值

tru*_*ype 7 ruby hash ruby-on-rails

这是一个相当简单的问题,但我在 SO 上没有看到它,而且我是一个 Ruby 菜鸟。

在 Ruby 中,如果我有一个哈希值,与此类似。

hashOne = {'dog' => 'canine', 'cat' => 'feline', 'me' => 'rubynooby'}
Run Code Online (Sandbox Code Playgroud)

假设我想用几种不同的方式替换该值。

方法一

假设我想用 替换 的me值rubypro。我见过这样做的:

hashOne[:me] = "rubypro"
Run Code Online (Sandbox Code Playgroud)

但我还没有找到用哪个数字替换该值的解决方案,例如,让我们假设我总是想更改第三个键(并假设它从 1 而不是 0 开始)

方法 2 - 这些不起作用

hashOne[3] = "rubypro"
Run Code Online (Sandbox Code Playgroud)

或者

hashOne.values[3] = "rubypro"
Run Code Online (Sandbox Code Playgroud)

我还没有看到任何这样的例子,也没有看到关于它的问题。有人能指出我那个方向吗?

我尝试解决这个问题的原因是因为我有一个哈希,我不知道其中的键是什么,但我知道我想要的值是什么。这很奇怪,但这就是我的处境。

Jef*_*eff 1

你可以做hashOne[hashOne.keys[3]] = 'rubypro'。我还记得读过红宝石中的哈希是有序的,但我不完全确定。(使用索引时要小心,因为它们在其他语言中可能不会排序)在尝试使用索引分配键之前,我会确保键始终以相同的顺序返回。

如果您确实想使用索引,我建议使用数组,因为这不是键/值哈希的目的。