Binäroperator (bedingter Operator)
?Verarbeitung wenn wahr:Verarbeitung wenn falsch
Groß- / Kleinschreibung
case Zielobjekt oder Ausdruck
wenn Wert 1
#Verarbeitung für Wert 1 dann
wenn Wert 2 dann#Was tun, wenn der Wert 2 wahr ist?(Wenn Sie dann verwenden, benötigen Sie nur eine Zeile)
else
#Was tun, wenn keiner von ihnen übereinstimmt?
end
- Da der zuletzt ausgewertete Ausdruck der Rückgabewert ist, ist es auch möglich, das Ergebnis in eine Variable einzufügen.
-Der Wert nach wann kann ein Hash sein wie: Japan.
Klasse
Klasse Klassenname(Der erste Buchstabe ist in Großbuchstaben. Kamelkoffer)
end
- Da Ruby eine einzelne Vererbung verwendet, kann eine Klasse nur eine Oberklasse haben.
-Wenn ein Modul in einer Klasse enthalten ist, kann die im Modul definierte Methode als Instanzmethode aufgerufen werden.
- Das Hinzufügen einer Funktion durch Einschließen oder Erweitern eines Moduls zu einer Klasse wird als Mix-In bezeichnet, und ein Mechanismus, der der Mehrfachvererbung ähnelt, kann damit realisiert werden. Da include als Instanzmethode aufgerufen und als singuläre Methode (Klassenmethode) erweitert werden kann, erweitern Sie, wenn Sie es direkt unter der Klassensyntax aufrufen möchten.
-Die Klasse ist eine Instanz (Objekt) der Klassenklasse. Es erbt die Modulklasse, die die Objektklasse erbt.
-Wie überprüfe ich die enthaltenen Module?
> User.include?(Modulname)
=> #gibt true oder false zurück
> User.included_module
=> [Kernel] #Enthaltene Module werden als Array zurückgegeben
> User.ancestors
=> [Bank, Object, Kernel, BasicObject] #Module und Superklassen wurden zurückgegeben
Modul
Modul Modulname
Moduldefinition. Methoden, Konstanten usw.
end
- Im Gegensatz zu Klassen können Instanzen nicht aus Modulen erstellt werden. (Ich erhalte eine Fehlermeldung mit user = User.new)
- Andere Module und Klassen können nicht vererbt werden. Es kann nicht vererbt werden, da die is-a-Beziehung nicht gilt. Sie wird jedoch verwendet, wenn Sie gemeinsame Funktionen haben möchten.
- Wenn Sie sich in eine Klasse einmischen und diese nicht öffentlich machen müssen, ist es besser, sie auf der Modulseite privat zu machen.
- Da das Selbst des Moduls zur Instanz des Include-Ziels wird, kann der Preis auch auf der Modulseite aufgerufen werden, wenn die Include-Klasse über eine Preismethode verfügt.
- Der Grund, warum Puts und Loop-Methoden in Ruby jederzeit verwendet werden können, besteht darin, dass die Object-Klasse an der Spitze praktisch aller Klassen das Karnel-Modul enthält. (Inhalt des Karnel-Moduls)
-Das Modul ist eine Instanz der Modulklasse. Es erbt die Object-Klasse.
Ausnahmebehandlung
Die grundlegendste Syntax.
begin
#Verarbeitung, die Ausnahmen verursachen kann
rescue
#Was tun, wenn eine Ausnahme auftritt?
end
ensure&else.
begin
#Verarbeitung, die Ausnahmen verursachen kann
(#Da Sie die Verarbeitung schreiben können, wenn hier keine Ausnahme auftritt, ist sonst häufig nichts erforderlich.)
(rescue)
(#Was tun, wenn eine Ausnahme auftritt?)
(else)
#Was tun, wenn keine Ausnahme auftritt?
(ensure)
#Prozess, der unabhängig vom Vorhandensein oder Fehlen einer Ausnahme ausgeführt werden soll
end
・ Rettung ist nicht obligatorisch. Sie können abnormal enden, aber wenn es einen Prozess gibt, den Sie ausführen möchten, bevor er endet, können Sie nur sicherstellen
- In Fällen wie dem Übergeben eines Blocks an die offene Methode und dem "Freigeben der Quelle bei Verwendung immer" ist es jedoch häufig möglich, automatisch eine Methode mit einem Block zu verwenden, sodass die Sicherstellungsmethode möglicherweise nicht ins Spiel kommt.
def Methodenname
case object
when :japan
'yen'
when :us
'dollar'
else
raise "Fehlermeldung"
#=> RuntimeError: "Fehlermeldung"
#Wenn nichts angegeben ist, wird RuntimeError aufgerufen.
end
end
・ Wenn Sie etwas anderes als RuntimeError aufrufen möchten, lesen Sie Folgendes.
① ArgumentError auslösen," Fehlermeldung "
Raise erhöhen ArgumentError.new (" Fehlermeldung ")
Block
Ein Klumpen Verarbeitung. Blöcke können mit Proc objektiviert werden
In Ruby können Sie beim Aufrufen von Methoden Blöcke verwenden.
Methodenübersicht
1 |
2 |
chomp |
Zeilenumbruchzeichen entfernen |
scan |
|
message |
|
size(length) |
|
open |
|
inject |
|
reject |
|
brock.given? |
Gibt true zurück, wenn ein Block übergeben wird |
|
|
|
|