【发布时间】:2014-01-28 22:36:04
【问题描述】:
这是一个简单的家庭作业......
给定一个看起来像这样的哈希:
cost_of_groceries = {
"milk" => 3.50,
"egg" => 1.50,
"broccolli" => 0.75
}
我想打印出哪些杂货价格低于 2 美元,哪些杂货价格高于 2 美元。这将是一个示例输出:
milk is more than $2
eggs is less than $2
broccolli is less than $2
没问题,但使用 Ruby 1.8.7 打印的顺序不正确。
我的代码:
cost_of_groceries.each do |x,y|
if y > 2
puts "#{x} is more than $2"
else
puts "#{x} is less than $2"
end
end
这是我得到的:
broccolli is less than $2
egg is less than $2
milk is more than $2
=> {"broccolli"=>0.75, "egg"=>1.5, "milk"=>3.5}
我意识到 1.9 之前的 Ruby 不维护哈希上的迭代顺序,我知道我可以使用不同的版本来解决这个问题,但我希望深入研究并学习 1.9 之前的替代方法.3.我不知道它什么时候会派上用场。
这是一个类似的帖子:“Ruby maintain Hash insertion order”
【问题讨论】:
-
一个词:数组。此外,1.8.7 已弃用且不受支持。学习如何使用它可能不会派上用场。
-
1.8.7 可能已被弃用,但它肯定安装在很多系统上,并且不会因为不受支持而消失。我们有数百台装有 1.8.6 的机器,它们不会升级,因此了解这些技巧会非常方便。另外,知道这一点也适用于除 Ruby 之外的其他语言。这不是一对一的匹配,但这类似于我在 Perl 中的做法。
标签: ruby hash ruby-1.8.7