답변:
대신 sort_by를 사용하는 것이 좋습니다.
objects.sort_by {|obj| obj.attribute}
특히 속성을 계산할 수있는 경우.
또는 더 간결한 접근 방식 :
objects.sort_by(&:attribute)
objects.sort_by { |obj| obj.attribute.downcase }
sort!
(예 : 속도 등) 과 어떻게 비교되는지 아십니까?
예, Array#sort!
이것을 사용 하는 것은 쉽습니다.
myarray.sort! { |a, b| a.attribute <=> b.attribute }
<=>
합니까? 어떤 종류의 오류가 발생합니까? 등, 광고 메스꺼움. 즉, "하지만 나에게는 운이 없다"보다 더 자세한 정보가 필요합니다.
sort
원본을 보존하고 결과를 다른 개체에 할당하려는 경우 사용 합니다. 그렇지 않으면 내부 변형 sort!
. 실제로 원본 객체를 복사 한 후 내부적으로 sort
호출 sort!
합니다.
sort!
제대로 작동 할 것이라고 보장 할 수 있으며, 항상 (!) 작성한 것과 동일한 작업을 수행합니다.
<=> 메서드를 재정 의하여 모든 클래스를 정렬 가능하게 만들 수 있습니다.
class Person
attr_accessor :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def <=>(other)
@last_name + @first_name <=> other.last_name + other.first_name
end
end
이제 Person 객체의 배열을 last_name에서 정렬 할 수 있습니다.
ar = [Person.new("Eric", "Cunningham"), Person.new("Homer", "Allen")]
puts ar # => [ "Eric Cunningham", "Homer Allen"] (Person objects!)
ar.sort!
puts ar # => [ "Homer Allen", "Eric Cunningham" ]
objects.sort_by(&:attribute)