・ Beziehung zwischen Klasse und Instanz Die Klasse ist übergeordnet und die Instanzen sind untergeordnet, und es gibt viele Instanzen in der Klasse. Um ein Beispiel zu geben, bedeutet dies, dass Herr A (Instanz), Herr B (Instanz), Herr C (Instanz) und Herr D (Instanz) in der Gliederung (Klasse) von Menschen existieren.
Art | Charakteristisch |
---|---|
Lokale Variablen | Temporäre Ad-hoc-Variablen. Kann nur innerhalb der definierten Methode verwendet werden |
Instanzvariable | Vom Objekt gehaltene Variablen. Wenn es innerhalb einer Instanz definiert ist, kann es für jede Methode verwendet werden, die in dieser Instanz nicht vorhanden ist. |
Beispiel)
class MyClass
def method_1
@number=100
end
def method_2
@number #Andere Methoden(method_1)Definiert in@eine andere Methode für die Nummer(method_2)Verfügbar um
end
end
Wenn Sie Instanzvariablen wie @name richtig verwenden möchten, müssen Sie zwei Dinge tun:
class User
def name=(name) #1.
@name = name
end
def name #2.
@name
end
Die Methode, die @name verwenden kann, wird erst abgeschlossen, nachdem Sie hierher gekommen sind. ... aber es ist nervig.
class User
attr_accessor :name
end
Durch die Verwendung von attr_accessor wurde es sofort aktualisiert.
An attr_accessor können verschiedene Attribute angehängt werden
class User
atte_accessor :name, :address, :email
end
Wenn Sie jedes Attribut verwenden möchten, gehen Sie wie folgt vor
user = User.new
user.name = "Yu Odai"
user.address = "Tokio"
def profile #Ich habe eine Methode erstellt, um den Namen und die Herkunft anzuzeigen
"#{name}(#{address})"
end
user.profile #Führte die Profilmethode aus, die den Namen und die Herkunft des Benutzers zusammen anzeigt
=> "Yu Odai(Tokio)"
Sie können Benutzerinformationen mit Name und Adresse eingeben und anrufen.
if führt den Prozess aus, wenn das Ergebnis der Bedingung wahr ist, aber es sei denn, der Prozess wird ausgeführt, wenn das Ergebnis der Bedingung falsch ist. (Machen Sie das Gegenteil von if)
Das übliche if ist an der Rückseite angebracht. Wenn usw. nicht angehängt werden kann und nur auf eine Zeile wirkt
puts 'Guten Morgen' if true #Ausgabe
puts 'Danke für deine harte Arbeit' if false #Nicht ausgegeben
Der obige Code lautet "Drucke Put, wenn das Ergebnis wahr ist". Da das Ergebnis wahr ist, wird "Guten Morgen" ausgegeben.
Wenn Sie den gewünschten Wert in einem normalen Array erhalten möchten, müssen Sie die Nummer (Nummer) angeben. Dies wird unmöglich, wenn die Informationsmenge in der Sequenz zunimmt. Daher verwenden wir einen Hash und geben jedem Wert so etwas wie einen Spitznamen (Schlüssel). Wenn Sie auf diese Weise einen Spitznamen eingeben, wird der damit verbundene Wert automatisch angezeigt.
jinnkou ={ tokyo: 13636222, kanagawa: 9145572 }
#{Spitzname (Schlüssel):Bevölkerung von Tokio,Spitzname (Schlüssel):Kanagawa Bevölkerung}
puts jinnkou[:tokyo]
=> 13636222
Setzen Sie: in [] und geben Sie den Spitznamen (Schlüssel) ein
1-4-1 initialize Immer wenn Sie "OO.new" in Ruby ausführen, wird die Initialisierung in der Klasse OO ausgeführt. Ermöglicht die Eingabe von Werten, die Tabellenspalten entsprechen Zum Beispiel, wenn Sie neue Informationen mit Namen, Adresse und E-Mail-Spalten in die Benutzertabelle einfügen Wenn Sie die Initialisierung (Name, Adresse, E-Mail) schreiben, führen Sie Vorgänge aus, z. B. "Der erste in Klammern ist der Name, der zweite ist die Adresse und der dritte ist die E-Mail."
class User #User.Sie können initialize verwenden, wenn es neu ist
def initialize(name, address, email)
@name = name
@address = address
@email = email
end
end
user = User.new("Neiko Oba","Tokio","nil")
# || || ||
#initialize( name ,address, email)
Wenn jemand die Methode verwenden kann, führt dies aus Sicherheitsgründen zu Problemen wie dem Verlust persönlicher Informationen. Verwenden Sie daher die private Methode, um zu verhindern, dass die Methode von außen verwendet wird.
Machen Sie kleine Methoden (nur ein Prozess oder der Prozess selbst einfach) zu einer Gruppe als Modul, damit sie in verschiedenen Klassen verwendet werden können.
#Modul, das den Preis zusammenfasst
module PriceHolder
def total_price
price*Tax.rate
end
end
class Product
include PriceHolder
attr_accessor :price
end
class OrderedItem
include PriceHolder
attr_accessor :unit_price, :volume
#Stückpreis ohne Steuern*Menge
def price
unit_price*volume
end
end
Der Prozess des Multiplizierens des Preises mit dem Verbrauchsteuersatz, um den Rückgabewert zu erhalten, wird als PriceHolder-Modul verwendet, und das PriceHolder-Modul wird für jede Klasse verwendet. Verwenden Sie include, wenn Sie Module verwenden.
number ||=10
Wenn es eine Nummer gibt, wird die Nummer verwendet, andernfalls wird die Nummer verwendet, indem die Nummer durch 10 ersetzt wird.
Wenn Sie beispielsweise eine Benutzertabelle haben, aber object.name eingeben, wird eine Fehlermeldung angezeigt, da keine Objekttabelle vorhanden ist. Wenn Sie jedoch das bocchi-Operatorobjekt & .name verwenden, wird nil anstelle eines Fehlers als Rückgabewert zurückgegeben, wenn keine Tabelle vorhanden ist.
ary1 = ['apple', 'banana' ,'orange']
# %Wenn Sie die Notation verwenden
ary1 = %w[apple banana orange]
Wenn Sie die% -Notation verwenden, können Sie "" weglassen.
class User
attr_accessor :name, :address
end
user1 = User.new(name:'Neiko Oba', address:'Tokio')
user2 = User.new(name:'Miyuki Koshiba', address:'Präfektur Chiba')
user3 = User.new(name:'Yu Odai', address:'Präfektur Kanagawa')
users = [user1,user2.user3]
Verwenden Sie zu diesem Zeitpunkt die Zuordnungsmethode, wenn Sie nur die Namen der einzelnen Benutzer in einem Array anzeigen möchten.
names = users.map(&:name)
=>["Neiko Oba","Miyuki Koshiba","Yu Odai"]
Auf diese Weise können Sie, wenn Sie die ursprüngliche Array-Karte (&: gewünschte Informationen) verwenden, ein Array nur mit den gewünschten Informationen erstellen.
> require './user.rb'
Der bei der Ausführung der Methode zurückgegebene Wert wird als "Rückgabewert" bezeichnet. Wenn eine Methode ausgeführt wird, gibt sie grundsätzlich einen Rückgabewert aus, aber einen Rückgabewert, wenn alle Methoden ausgeführt wurden. Wenn Sie einen Rückgabewert in der Mitte der Methode wünschen, verwenden Sie return, um den Rückgabewert abzurufen.
Recommended Posts