目前我即将学习这种令人敬畏的语言,并希望为在线游戏" Eve Online"建立一个小型计算器。
我正在努力解决这部分代码
orders = Hash.new
orders = {typeid: "type1", value: {order1: {:stationName=>"Jita IV - Moon 4 - Caldari Navy Assembly Plant", price: 3599.99, volRemain: 28},
order2: {:stationName=>"Jita IV - Moon 4 - Caldari Navy Assembly Plant", price: 3600.00, volRemain: 13}}}
{typeid: "type2", value: {order3: {:stationName=>"Jita IV - Moon 4 - Caldari Navy Assembly Plant", price: 3500.00, volRemain: 43}}}
p orders.select {|key, value| value[:order1][:price].to_i < 3600}
显然&#34; p orders.select&#34;不起作用。
我想要实现的是为特定的类型检索10个最便宜的价格。
我喜欢这里给出的方法:How do I search within an array of hashes by hash values in ruby?
然而,这迫使我将哈希保持在阵列中然后再次,我无法嵌套它们。
我不想做的事情,就是窝3和#34;。做,关键,值|&#34;,因为(我想至少)它会导致O的复杂性( n ^ 3),这应该是非常糟糕的。
那么有没有办法以智能的方式检索所有:价格 - 某种类型的价值?
感谢所有人提前!
答案 0 :(得分:2)
我会使用数组:
orders = [
{ type_id: "type1", price: 3599.99, vol_remain: 28, station_name: "Jita IV - Moon 4 - Caldari Navy Assembly Plant" },
{ type_id: "type1", price: 3600.00, vol_remain: 13, station_name: "Jita IV - Moon 4 - Caldari Navy Assembly Plant" },
{ type_id: "type2", price: 3500.00, volRemain: 43, station_name: "Jita IV - Moon 4 - Caldari Navy Assembly Plant" }
]
orders.select { |order| order[:price] < 3600 }
#=> [
# {:type_id=>"type1", :price=>3599.99, :vol_remain=>28, :station_name=>"Jita IV - Moon 4 - Caldari Navy Assembly Plant"},
# {:type_id=>"type2", :price=>3500.0, :vol_remain =>43, :station_name=>"Jita IV - Moon 4 - Caldari Navy Assembly Plant"}
# ]
由于您使用的是Ruby on Rails,您应该使用模型和关联,例如:
class Order < ActiveRecord::Base
belongs_to :station
end
class Station < ActiveRecord::Base
has_many :orders
end