[RAILS] Sortieren Sie ein Array von Ruby Homebrew-Klassen

Sortieren Sie ein Array von Ruby Homebrew-Klassen

** 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.

Homebrew-Klasse

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

Sortieren Sie ein Array von Ruby Homebrew-Klassen
[Ruby] Array
12 von Array
Vergleichen Sie Elemente eines Arrays (Java)
Konvertieren Sie ein Array von Zeichenfolgen in Zahlen
Grundlagen von Ruby
Ruby zweidimensionales Array
Ruby-Array-Manipulation
Anfordern durch Übergeben eines Arrays an eine Abfrage mit dem HTTP-Client von Ruby
[Ruby] Klassen und Instanzen
Definition der Rubinmethode
Ruby-Klassen und -Instanzen
[Ruby] Zähle eine gerade Zahl in einem Array mit der geraden? -Methode
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
So rufen Sie den Hashwert in einem Array in Ruby ab
Impressionen und Erinnerungen an die Installation von OpenSL, Curl, Ruby, Homebrew und Rbenv
Installieren Sie Ruby 3.0.0 Preview 1 mit einer Kombination aus Homebrew und rbenv
Generieren Sie Stream aus einem Array primitiver Typen in Java