English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby unterstützt eine reiche Sammlung von Operatoren. Die meisten Operatoren sind Methodenaufzeichnungen. Zum Beispiel, a + b wird als a interpretiert.+(b), wobei auf die Variable a verwiesen wird. + Der Methodenaufruf, wobei b der Parameter des Methodenaufrufs ist.
Für jeden Operator (+ - * / % ** & | ^ << >> && ||) haben alle einen entsprechenden Abkürzung zuweisenden Operatoren (+= -= etc.).
Annehmen, dass der Wert der Variable a 10,Variable b hat den Wert 20, dann:
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Addition - Addieren der Operanden auf beiden Seiten des Operators | a + b erhält 30 |
- | Subtraktion - Subtrahiert den rechten Operanden vom linken Operanden | a - b erhält -10 |
* | Multiplikation - Multipliziert die Operanden auf beiden Seiten des Operators | a * b erhält 200 |
/ | Division - Teilt den linken Operanden durch den rechten Operanden | b / a erhält 2 |
% | Modulo - Teilt den linken Operanden durch den rechten Operanden, gibt den Rest zurück | b % a erhält 0 |
** | Exponentiation - Durchführung der Exponentenrechnung | a**b erhält 10 von 20 zur Potenz |
Annehmen, dass der Wert der Variable a 10,Variable b hat den Wert 20, dann:
Operator | Beschreibung | Beispiel |
---|---|---|
== | Überprüft, ob die Werte der beiden Operanden gleich sind, wenn ja, ist die Bedingung wahr. | (a == b) ist nicht wahr. |
!= | Überprüft, ob die Werte der beiden Operanden gleich sind, wenn nicht, ist die Bedingung wahr. | (a != b) ist wahr. |
> | Überprüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist, wenn ja, ist die Bedingung wahr. | (a > b) ist nicht wahr. |
< | Überprüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist, wenn ja, ist die Bedingung wahr. | (a < b) ist wahr. |
>= | Überprüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist, wenn ja, ist die Bedingung wahr. | (a >= b) ist nicht wahr. |
<= | Überprüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist, wenn ja, ist die Bedingung wahr. | (a <= b) ist wahr. |
<=> | Verknüpfte Vergleichsoperator. Wird 0 zurückgegeben, wenn der erste Operanden gleich dem zweiten Operanden ist, wird 1wenn der erste Operanden kleiner als der zweite Operanden ist, wird zurückgegeben -1. | (a <=> b) gibt zurück -1. |
=== | wird zum Testen verwendet case Gleichheit in der when-Klausel des Ausdrucks. | (1...10) === 5 Wird true zurückgegeben. |
.eql? | Wird true zurückgegeben, wenn Empfänger und Parameter denselben Typ und denselben Wert haben. | 1 == 1.0 gibt true zurück, aber 1.eql?(1.0) gibt false zurück. |
equal? | Wenn Empfänger und Parameter denselben Objekt-ID haben, wird true zurückgegeben. | Wenn aObj ein Abbild von bObj ist, gibt aObj == bObj true zurück, a.equal?bObj gibt false zurück, aber a.equal?aObj gibt true zurück. |
Annehmen, dass der Wert der Variable a 10,Variable b hat den Wert 20, dann:
Operator | Beschreibung | Beispiel |
---|---|---|
= | Einfacher Zuweisungsoperator, der den Wert des rechten Operanden dem linken Operanden zugewiesen wird | c = a + b wird a + Der Wert von b wird c zugewiesen |
+= | Additions- und Zuweisungsoperator, der das Ergebnis der Addition des rechten Operanden mit dem linken Operanden dem linken Operanden zugewiesen wird | c += a entspricht c = c + a |
-= | Subtraktions- und Zuweisungsoperator, der das Ergebnis der Subtraktion des rechten Operanden vom linken Operanden dem linken Operanden zugewiesen wird | c -= a entspricht c = c - a |
*= | Multiplikations- und Zuweisungsoperator, der das Ergebnis der Multiplikation des rechten Operanden mit dem linken Operanden dem linken Operanden zugewiesen wird | c *= a entspricht c = c * a |
/= | Divisions- und Zuweisungsoperator, der das Ergebnis der Division des linken Operanden durch den rechten Operanden dem linken Operanden zugewiesen wird | c /= a entspricht c = c / a |
%= | Modulo- und Zuweisungsoperator, der den Modulus der beiden Operanden der linken Operanden zugewiesen wird | c %= a entspricht c = c % a |
**= | Exponent und Zuweisungsoperator, führt exponentielle Berechnungen durch und weist das Ergebnis dem linken Operanden zu. | c **= a entspricht c = c ** a |
Ruby unterstützt auch die parallele Zuweisung von Variablen. Dies ermöglicht es mehreren Variablen, durch eine Zeile Ruby-Code initialisiert zu werden. Zum Beispiel:
a = 10 b = 20 c = 30
Mit Parallelzuweisungen kann schneller deklariert werden:
a, b, c = 10, 20, 30
Parallelzuweisungen sind auch nützlich, um die Werte zweier Variablen auszutauschen:
a, b = b, c
Bit-Operatoren wirken auf Bits und führen Operationen bitweise aus.
Annehmen, wenn a = 60, und b = 13,nun in binärem Format, sie sehen so aus:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Die nachstehende Tabelle zeigt die bitweisen Operatoren, die Ruby unterstützt.
Operator | Beschreibung | Beispiel |
---|---|---|
& | Wenn ein Bit gleichzeitig in beiden Operanden existiert, kopiert der binäre AND-Operator ein Bit in das Ergebnis. | (a & b) wird erhalten 12,d.h. 0000 1100 |
| | Wenn ein Bit in jedem Operanden existiert, kopiert der binäre OR-Operator ein Bit in das Ergebnis. | (a | b) wird erhalten 61d.h. 0011 1101 |
^ | Wenn ein Bit in einem der Operanden existiert, aber nicht gleichzeitig in beiden Operanden existiert, kopiert der binäre XOR-Operator ein Bit in das Ergebnis. | (a ^ b) wird erhalten 49d.h. 0011 0001 |
~ | Der binäre Komplement-Operator ist ein einäriger Operator mit dem Effekt "umkehren", d.h. 0 wird in1,1wird 0. | (~a ) wird erhalten -61d.h. 1100 0011eine Komplementform einer vorteiligen Binärzahl. |
<< | Binäres Linksverschiebe-Operator. Der Wert des linken Operanden wird um die Anzahl der Stellen, die der rechte Operand angegeben hat, nach links verschoben. | a << 2 Wird erhalten 240, d.h. 1111 0000 |
>> | Binäres Rechtsverschiebe-Operator. Der Wert des linken Operanden wird um die Anzahl der Stellen, die der rechte Operand angegeben hat, nach rechts verschoben. | a >> 2 Wird erhalten 15,d.h. 0000 1111 |
Die nachstehende Tabelle zeigt die logischen Operatoren, die Ruby unterstützt.
Annehmen, dass der Wert der Variable a 10,Variable b hat den Wert 20, dann:
Operator | Beschreibung | Beispiel |
---|---|---|
and | Bezeichnet als logischer Und-Operator. Wenn beide Operanden wahr sind, ist die Bedingung wahr. | (a and b) ist wahr. |
or | Bezeichnet als logischer Oder-Operator. Wenn mindestens einer der Operanden nicht null ist, ist die Bedingung wahr. | (a or b) ist wahr. |
&& | Bezeichnet als logischer Und-Operator. Wenn beide Operanden nicht null sind, ist die Bedingung wahr. | (a && b) ist wahr. |
|| | Bezeichnet als logischer Oder-Operator. Wenn mindestens einer der Operanden nicht null ist, ist die Bedingung wahr. | (a || b) ist wahr. |
! | Bezeichnet als logischer Nicht-Operator. Verwendet, um den logischen Zustand des Operanden umzukehren. Wenn die Bedingung wahr ist, wird der logische Nicht-Operator sie in falsch umwandeln. | !(a && b) ist falsch. |
not | Bezeichnet als logischer Nicht-Operator. Verwendet, um den logischen Zustand des Operanden umzukehren. Wenn die Bedingung wahr ist, wird der logische Nicht-Operator sie in falsch umwandeln. | not(a && b) ist falsch. |
Es gibt mehr als eine Operation, die als bedingter Operator bezeichnet wird. Der erste berechnet den wahren oder falschen Wert des Ausdrucks und entscheidet dann entsprechend dieses Ergebnisses, welche der beiden folgenden Anweisungen ausgeführt wird. Die Syntax des bedingten Operators ist wie folgt:
Operator | Beschreibung | Beispiel |
---|---|---|
? : | Bedingungsausdruck | wenn Bedingung wahr ? dann Wert X : sonst Wert Y |
in Ruby werden Bereichreihen verwendet, um eine Reihe von aufeinanderfolgenden Werten zu erstellen - enthält den Anfangswert, den Endwert (je nach Fall) und die Werte dazwischen.
In Ruby werden diese Reihen durch die ".." und "..."-Bereichsoperator erstellt. Der durch das Zweipunktsymbol erstellte Bereich enthält den Anfangswert und den Endwert, der durch das Dreipunktsymbol erstellte Bereich enthält nur den Anfangswert und nicht den Endwert.
Operator | Beschreibung | Beispiel |
---|---|---|
.. | Erstelle einen Bereich von Anfang bis Ende (einschließlich Ende) | 1..10 Erstelle einen Bereich von 1 bis 10 bereich |
... | Erstelle einen Bereich von Anfang bis Ende (ohne Ende) | 1...10 Erstelle einen Bereich von 1 bis 9 bereich |
definiert? ist ein spezieller Operator, der wie eine Methodenaufrufform verwendet wird, um zu bestimmen, ob ein übergebener Ausdruck definiert ist. Er gibt die Beschreibungszeichenkette des Ausdrucks zurück und gibt bei einem nicht definierten Ausdruck nil.
Hier sind verschiedene Verwendungen des Operators defined?:
definiert? variable # wenn variable bereits initialisiert wurde,dann True
Beispiel:
foo = 42 definiert? foo # => "local"-variable" definiert? $_ # => "global"-variable" definiert? bar # => nil(nicht definiert)
definiert? method_call # wenn die Methode bereits definiert ist,dann True
Beispiel:
definiert? puts # => "method" definiert? puts(bar) # => nil(hier bar nicht definiert) definiert? unpack # => nil(hier nicht definiert)
# wenn es Methoden gibt,die durch super aufrufbar sind,dann True definiert? super
Beispiel:
definiert? super # => "super"(wenn aufrufbar) definiert? super # => nil(wenn nicht aufrufbar)
definiert? yield # wenn ein Codeblock übergeben wurde,dann True
Beispiel:
definiert? yield # => "yield"(wenn ein Block übergeben wurde) defined? yield # => nil (wenn kein Block übergeben wurde)
Du kannst Methoden in einer Klasse oder einem Modul aufrufen, indem du den Klass- oder Modulnamen vor den Methodennamen und . setzt. Du kannst Konstanten in einer Klasse oder einem Modul referenzieren, indem du den Klass- oder Modulnamen und zwei Doppelpunkte :: setzt.
:: ist ein unärer Operator, der das Definieren von Konstanten, Beispielmethoden und Klassenmethoden innerhalb einer Klasse oder eines Moduls ermöglicht und von jedem Ort außerhalb der Klasse oder des Moduls zugänglich ist.
Denk daran:In Ruby können Klassen und Methoden auch als Konstanten verwendet werden.
Du musst nur den Konstantennamen vor dem Ausdruck setzen :: Präfix, um den angemessenen Klass- oder Modulobjekt zurückzugeben.
Wenn das Ausdruck vor :: ein Klassname oder Modulname ist, wird der entsprechende Konstantenwert der Klasse oder des Moduls zurückgegeben; wenn vor :: kein Präfixausdruck vorhanden ist, wird der entsprechende Konstantenwert der Hauptklasse Object zurückgegeben. .
Hier sind zwei Beispiele:
MR_COUNT = 0 # Definiert in der Hauptklasse Object module Foo MR_COUNT = 0 ::MR_COUNT = 1 # Setze den globalen Zähler 1 MR_COUNT = 2 # Setze den lokalen Zähler 2 end puts MR_COUNT # Dies ist die globale Konstante puts Foo::MR_COUNT # Dies ist die lokale Konstante von "Foo"
Zweiter Beispiel:
CONST = 'out there' class Inside_one CONST = proc {'in there'} def where_is_my_CONST ::CONST + 'inside one' end end class Inside_two CONST = 'inside two' def where_is_my_CONST CONST end end puts Inside_one.new.where_is_my_CONST puts Inside_two.new.where_is_my_CONST puts Object::CONST + Inside_two::CONST puts Inside_two::CONST + CONST puts Inside_one::CONST puts Inside_one::CONST.call + Inside_two::CONST
Die folgende Tabelle listet alle Operator in der Reihenfolge der Priorität von hoch nach niedrig auf.
Methode | Operator | Beschreibung |
---|---|---|
is | :: | Konstantenaufrufoperator |
is | [ ] [ ]= | Element reference, element set |
is | ** | Exponentiation |
is | ! ~ + - | Negation, complement, unary addition, unary subtraction (the names of the last two methods are +@ and -@) |
is | * / % | Multiplication, division, modulus |
is | + - | Addition and subtraction |
is | >> << | Bitwise right shift, bitwise left shift |
is | & | Bitwise AND |
is | ^ | | Bitwise XOR, bitwise OR |
is | <= < > >= | Comparison operators |
is | <=> == === != =~ !~ | Equality and pattern matching operators (!= and !~ cannot be defined as methods) |
&& | Logical and | |
|| | Logical or | |
.. ... | Range (inclusive, exclusive) | |
? : | Ternary if-then-else | |
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= | Assignment | |
defined? | Check if the specified symbol is defined | |
not | Logical negation | |
or and | Logical composition |
Note:is marked in the method list as is The operators are actually methods, so they can be overloaded.