我有一个Mortgage对象数组
class Mortgage
attr_accessor :rate, :deposit
def initialize(deposit, rate)
@deposit = deposit
@rate = rate
end
end我想拒绝任何利率高于相同押金的抵押贷款。
例如,假设下面的抵押贷款数组
Mortgage 1, :rate => 3, :deposit => 20
Mortgage 2, :rate => 5, :deposit => 20
Mortgage 3, :rate => 7, :deposit => 30该方法应该拒绝抵押贷款2。
发布于 2011-05-12 18:04:07
mortgages = [
Mortgage.new(20, 3),
Mortgage.new(20, 5),
Mortgage.new(30, 7)
]
mortgages.group_by(&:deposit).map { |deposit, mortgages| mortgages.min_by(&:rate) }group_by根据给定的方法构造一个散列,因此在本例中它给出:
{
20 => [
#<Mortgage:0x24 @rate=3 @deposit=20>,
#<Mortgage:0x2c @rate=5 @deposit=20>
],
30 => [
#<Mortgage:0x38 @rate=7 @deposit=30>
]
}然后,只需从每个存款中获得最低利率的抵押贷款就足够容易了。
https://stackoverflow.com/questions/5976279
复制相似问题