說我有下面的類:什麼是最優雅的方式來獲得數組中的值,最小化某個類的屬性?
class Person
def initialize(name, age)
@name = name
@age = age
end
def get_age
return @age
end
end
我有Person
對象的數組。是否有一種簡潔,類似Ruby的方式讓年齡最小(或最大)的人獲得?通過它對它們進行排序怎麼樣?
說我有下面的類:什麼是最優雅的方式來獲得數組中的值,最小化某個類的屬性?
class Person
def initialize(name, age)
@name = name
@age = age
end
def get_age
return @age
end
end
我有Person
對象的數組。是否有一種簡潔,類似Ruby的方式讓年齡最小(或最大)的人獲得?通過它對它們進行排序怎麼樣?
這樣做:
people_array.min_by(&:get_age)
people_array.max_by(&:get_age)
people_array.sort_by(&:get_age)
類似下面:
youngest_person = people.select { |p| p.get_age == people.map(&:get_age).min }
假設你有一個名爲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 }
您的問題已適當回答的問題,但是,既然你有興趣在做類似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)
非常簡潔,沒問題。 – user3391564