[RAILS] Trier un tableau de classes homebrew Ruby

Trier un tableau de classes homebrew Ruby

** Un nouvel ingénieur (8e jour) qui sera une personne en 100 jours **

Comment trier le tableau contenant vos propres classes ... Je suis resté un peu coincé aujourd'hui, alors je vais le laisser comme mémo.

Cours Homebrew

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]

Créez vos propres classes d'utilisateurs comme celle-ci et placez-les dans un tableau appelé users Pensez à ce type d'utilisateurs aujourd'hui

** Essayez de trier pour le moment **

ruby.rb


users.sort
#Une erreur est survenue
#`sort': comparison of User with User failed (ArgumentError)

Je me fâche comme ci-dessus. Échec de la comparaison des utilisateurs. Vous ne pouvez pas comparer les objets tels qu'ils sont.

Nous comparerons donc par les attributs des objets. Pour ce faire, utilisez sort_by au lieu de la méthode sort. ** Comparer par âge **

ruby.rb


users = users.sort_by{|user|user.age}  #ordre croissant
p users.map{|user|"#{user.name},#{user.age},#{user.height}"}
#production["foo,15,190", "baz,28,168", "bar,80,150"]

users = users.sort_by{|user|user.age}.reverse  #Ordre décroissant
#production["bar,80,150", "baz,28,168", "foo,15,190"]

J'ai pu trier par les attributs de ma propre classe comme ça. Si vous voulez aller dans l'ordre décroissant, utilisez la méthode inverse pour plus de simplicité. De plus, la méthode sort_by est plus simple à appliquer, donc

ruby.rb


users = users.sort_by(&:height)

Avec cette seule ligne, vous pouvez trier les utilisateurs dans le tableau des utilisateurs par ordre croissant de hauteur. Ruby est incroyable, n'est-ce pas?

C'est tout pour aujourd'hui. Merci d'avoir regardé.

** 92 jours pour devenir ingénieur à part entière **

Recommended Posts

Trier un tableau de classes homebrew Ruby
[Ruby] Tableau
12 du tableau
Comparer les éléments d'un tableau (Java)
Convertir un tableau de chaînes en nombres
Bases de Ruby
Tableau bidimensionnel Ruby
Manipulation du tableau Ruby
Comment demander en passant un tableau à une requête avec le client HTTP de Ruby
[Ruby] Classes et instances
définition de la méthode ruby
Classes et instances Ruby
[Ruby] Comptez un nombre pair dans un tableau en utilisant la méthode pair?
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Comment récupérer la valeur de hachage dans un tableau dans Ruby
Impressions et souvenirs de l'installation d'openssl, curl, ruby, homebrew, rbenv
Installez Ruby 3.0.0 Preview 1 avec une combinaison de Homebrew et de rbenv
Générer un flux à partir d'un tableau de types primitifs en Java