Tor*_*örn 2 ruby associative-array
Ruby的返回值的顺序是以Hash::each_value{ |val| block }某种方式定义的吗?即对于给定的哈希值,循环迭代中的值的顺序总是*相同?
我想知道是不是这样,因为哈希的键值对不像数组的值那样排序.
给出以下示例:
myhash = { :a => 100, :b => 200, :z => 9, :e => 101 }
myhash.each_value { |val|
puts val
}
Run Code Online (Sandbox Code Playgroud)
Ruby确保它始终*打印
100
200
9
101
Run Code Online (Sandbox Code Playgroud)
如果定义了奖金问题:
订单定义的先决条件是什么?它仅适用于硬编码哈希作为示例吗?
[*]:" always "应该被理解为' 每次执行时以及任何具有Ruby 1.9+工作的系统 '.
在Ruby 1.8中,没有对Hashes进行排序,并且将以您不能依赖的任意顺序返回值.在Ruby 1.9中,基于插入键的时间(先插入第一个插入等等)来排序哈希值.
您在脚注中指定"'始终'应该在每次执行时以及在具有可用Ruby 1.9+的任何系统上读取'.".根据"总是"的定义,答案是"是";)
来自Ruby 1.8.7 Hash文档:
通过键或值遍历散列的顺序可能看起来是任意的,通常不会按插入顺序排列.
来自Ruby 1.9.3 Hash文档:
哈希值按照插入相应键的顺序枚举其值.
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |