** Ein neuer Ingenieur (8. Tag), der in 100 Tagen einer sein wird **
Wie sortieren Sie das Array mit Ihren eigenen Klassen ... Ich bin heute ein wenig festgefahren, also werde ich es als Memo hinterlassen.
user.rb
class User
attr_accessor :name, :age, :height
def initialize(name, age, height)
@name = name
@age = age
@height = height
end
end
user1 = User.new("foo", 15, 190)
user2 = User.new("bar", 80, 150)
user3 = User.new("baz", 28, 168)
users = [user1, user2, user3]
Erstellen Sie Ihre eigenen Benutzerklassen wie diese und fügen Sie sie in ein Array namens Benutzer ein Denken Sie heute an diese Art von Benutzern
** Versuchen Sie vorerst zu sortieren **
ruby.rb
users.sort
#Ein Fehler ist aufgetreten
#`sort': comparison of User with User failed (ArgumentError)
Ich werde wütend wie oben. Benutzer konnte nicht verglichen werden. Sie können Objekte nicht so vergleichen, wie sie sind.
Wir werden also anhand der Attribute der Objekte vergleichen. Verwenden Sie dazu sort_by anstelle der sort-Methode. ** Nach Alter vergleichen **
ruby.rb
users = users.sort_by{|user|user.age} #aufsteigende Reihenfolge
p users.map{|user|"#{user.name},#{user.age},#{user.height}"}
#Ausgabe["foo,15,190", "baz,28,168", "bar,80,150"]
users = users.sort_by{|user|user.age}.reverse #absteigende Reihenfolge
#Ausgabe["bar,80,150", "baz,28,168", "foo,15,190"]
Ich konnte so nach den Attributen meiner Klasse sortieren. Wenn Sie in absteigender Reihenfolge arbeiten möchten, verwenden Sie der Einfachheit halber die umgekehrte Methode. Außerdem ist die sort_by-Methode einfacher anzuwenden
ruby.rb
users = users.sort_by(&:height)
Mit dieser einen Zeile können Sie die Benutzer im Benutzerarray in aufsteigender Reihenfolge der Höhe sortieren. Ruby ist unglaublich, nicht wahr?
Das ist alles für heute. Danke fürs Zuschauen.
** 92 Tage, um ein vollwertiger Ingenieur zu werden **
Recommended Posts