(Exemple)
#Créer des données utilisateur
users = []
users << { first_name: 'Hanako', last_name: 'Yamada', age: 8 }
users << { first_name: 'Taro', last_name: 'Yamamoto', age: 10 }
#Méthode pour créer un nom
def full_name(user)
"#{user[:first_name]} #{user[:last_name]}"
end
#Afficher les données utilisateur
users.each do |user|
puts "Nom complet: #{full_name(user)},âge: #{user[:age]}"
end
problème
(Exemple 1)
users[0][:first_name] #=> "Hanako"
users[0][:first_mame] #=> nil
(Exemple 2)
#Ajouter une nouvelle clé sans autorisation
users[0][:food] = 'rice'
#Arbitrairement d'abord_Changer de nom
users[0][:first_name] = 'dozaemon'
puts users[0]
#=> {:first_name=>"dozaemon", :last_name=>"Yamada", :age=>8, :food=>"rice"}
(Exemple)
#Définir la classe User
class User
attr_reader :first_name, :last_name, :age
def initialize(first_name, last_name, age)
@first_name = first_name
@last_name = last_name
@age = age
end
end
#Créer des données utilisateur
users = []
users << User.new('Hanako', 'Yamada', 8)
users << User.new('Taro', 'Yamamoto', 10)
# users[0].first_name
#Méthode pour créer un nom
def full_name(user)
"#{user.first_name} #{user.last_name}"
end
#Afficher les données utilisateur
users.each do |user|
puts "Nom complet: #{full_name(user)},âge: #{user.age}"
end
#=>Nom complet: Hanako Yamada,âge: 8
#Nom complet: Taro Yamamoto,âge: 10
Si vous introduisez la classe User, une erreur se produira si vous faites une faute de frappe.
(Exemple)
puts users[0].first_name #=> 'Hanako'
puts users[0].first_mame #=> undefined method `first_mame' for #<User:0x00007f888d08c150> (NoMethodError)
Vous pouvez également empêcher l'ajout de nouveaux attributs ou la modification de leur contenu.
(Exemple)
#Je ne peux pas ajouter d'attributs sans autorisation
users[0].food = 'rice' #=> undefined method `food=' for #<User:0x00007fefae1300d8> (NoMethodError)
#Arbitrairement d'abord_Impossible de changer le nom
users[0].first_name = 'tanjiro' #=> undefined method `first_name=' for #<User:0x00007faa210c0418> (NoMethodError)
Vous pouvez également ajouter des méthodes à l'intérieur de la classe.
(Exemple) Définissez la méthode full_name dans la classe User
#Définir la classe User
class User
attr_reader :first_name, :last_name, :age
def initialize(first_name, last_name, age)
@first_name = first_name
@last_name = last_name
@age = age
end
#Méthode pour créer un nom
def full_name
"#{first_name} #{last_name}"
end
end
#Créer des données utilisateur
users = []
users << User.new('Hanako', 'Yamada', 8)
users << User.new('Taro', 'Yamamoto', 10)
#Afficher les données utilisateur
users.each do |user|
puts "Nom complet: #{user.full_name},âge: #{user.age}"
end
#=>Nom complet: Hanako Yamada,âge: 8
#Nom complet: Taro Yamamoto,âge: 10
De cette façon, une classe peut contenir des données en interne et également avoir ses propres méthodes qui utilisent les données qu'elle contient. Puisque les données et les méthodes liées aux données sont toujours définies, il est plus facile d'organiser les données et les méthodes que lorsque la classe n'est pas utilisée.
Introduction à Ruby pour ceux qui veulent devenir des professionnels
Recommended Posts