(Beispiel)
#Benutzerdaten erstellen
users = []
users << { first_name: 'Hanako', last_name: 'Yamada', age: 8 }
users << { first_name: 'Taro', last_name: 'Yamamoto', age: 10 }
#Methode zum Erstellen eines Namens
def full_name(user)
"#{user[:first_name]} #{user[:last_name]}"
end
#Benutzerdaten anzeigen
users.each do |user|
puts "Vollständiger Name: #{full_name(user)},Alter: #{user[:age]}"
end
Problem
(Beispiel 1)
users[0][:first_name] #=> "Hanako"
users[0][:first_mame] #=> nil
(Beispiel 2)
#Neuen Schlüssel ohne Erlaubnis hinzufügen
users[0][:food] = 'rice'
#Willkürlich zuerst_Namen ändern
users[0][:first_name] = 'dozaemon'
puts users[0]
#=> {:first_name=>"dozaemon", :last_name=>"Yamada", :age=>8, :food=>"rice"}
(Beispiel)
#Definieren Sie die Benutzerklasse
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
#Benutzerdaten erstellen
users = []
users << User.new('Hanako', 'Yamada', 8)
users << User.new('Taro', 'Yamamoto', 10)
# users[0].first_name
#Methode zum Erstellen eines Namens
def full_name(user)
"#{user.first_name} #{user.last_name}"
end
#Benutzerdaten anzeigen
users.each do |user|
puts "Vollständiger Name: #{full_name(user)},Alter: #{user.age}"
end
#=>Vollständiger Name: Hanako Yamada,Alter: 8
#Vollständiger Name: Taro Yamamoto,Alter: 10
Wenn Sie die Benutzerklasse einführen, tritt ein Fehler auf, wenn Sie einen Tippfehler machen.
(Beispiel)
puts users[0].first_name #=> 'Hanako'
puts users[0].first_mame #=> undefined method `first_mame' for #<User:0x00007f888d08c150> (NoMethodError)
Sie können auch verhindern, dass neue Attribute hinzugefügt oder deren Inhalt geändert werden.
(Beispiel)
#Ich kann keine Attribute ohne Erlaubnis hinzufügen
users[0].food = 'rice' #=> undefined method `food=' for #<User:0x00007fefae1300d8> (NoMethodError)
#Willkürlich zuerst_Name kann nicht geändert werden
users[0].first_name = 'tanjiro' #=> undefined method `first_name=' for #<User:0x00007faa210c0418> (NoMethodError)
Sie können der Klasse auch Methoden hinzufügen.
(Beispiel) Definieren Sie die Methode full_name in der User-Klasse
#Definieren Sie die Benutzerklasse
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
#Methode zum Erstellen eines Namens
def full_name
"#{first_name} #{last_name}"
end
end
#Benutzerdaten erstellen
users = []
users << User.new('Hanako', 'Yamada', 8)
users << User.new('Taro', 'Yamamoto', 10)
#Benutzerdaten anzeigen
users.each do |user|
puts "Vollständiger Name: #{user.full_name},Alter: #{user.age}"
end
#=>Vollständiger Name: Hanako Yamada,Alter: 8
#Vollständiger Name: Taro Yamamoto,Alter: 10
Auf diese Weise kann eine Klasse Daten intern speichern und verfügt auch über eigene Methoden, die die darin enthaltenen Daten verwenden. Da die Daten und Methoden, die sich auf die Daten beziehen, immer festgelegt sind, ist es einfacher, die Daten und Methoden zu organisieren, als wenn die Klasse nicht verwendet wird.
Einführung in Ruby für diejenigen, die Profis werden möchten
Recommended Posts