2014-03-07 5 views

Antwort

6

Dies tun zu bekommen:

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

Ziemlich kurz, in Ordnung. – user3391564

0

So etwas wie unten:

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

Sie bekommen array mit 5 verschiedenen Instanzen der Person namens ein Array Unter der Annahme.

Um die ältere Person

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

Und zum Sortieren von ihnen

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

Ihre Frage richtig, aber beantwortet wurde, da Sie interessiert sind inDinge in einem Ruby-artig, tunIch werde Ihnen einen besseren Ruby-ähnlichen Weg zeigen, Ihre Person Klasse zu definieren.

Wenn Sie das nicht tun Verhalten (Methoden, etc.) haben in der Klasse, der einfachste Weg, eine Struct verwendet:

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

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

Ansonsten eine benutzerdefinierte Klasse wie folgt erstellen, mit attr_reader und einem Hash Argumente:

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) 
Verwandte Themen