2014-03-07 33 views

回答

6

這樣做:

people_array.min_by(&:get_age) 
people_array.max_by(&:get_age) 
people_array.sort_by(&:get_age) 
+0

非常簡潔,沒問題。 – user3391564

0

類似下面:

youngest_person = people.select { |p| p.get_age == people.map(&:get_age).min } 
1

假設你有一個名爲array人有5種不同情況下的數組。

爲了讓老年人

for person in array 
    olderperson = person if maxperson.get_age < person.get_age 
end 

而對它們進行排序

array.sort! { |a,b| a.get_age <=> b.get_age } 
2

您的問題已適當回答的問題,但是,既然你有興趣在做類似Ruby的方式, 我將向您展示一個更好的類似Ruby的方式來定義您的Person類。

如果你沒有在你的類的行爲(方法等),最簡單的方法是使用一個結構:

Person = Struct.new(:name, :age) 

# example of use 
person = Person.new("My name", 21) 

否則,創建這樣一個自定義類,使用attr_reader和散列參數:

class Person 
    attr_reader :name, :age 

    def initialize(args = {}) 
    @name = args[:name] 
    @age = args[:age] 
    end 
end 

# example of use 
person = Person.new(:name => "My name", :age => 21) 
相關問題