Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
Operatoren
+
,
-
,
*
und
/
führen Addition, Subtraktion, Multiplikation beziehungsweise Division für alle
Numeric
-Klassen durch. Integer-Division gibt ein Integer-Ergebnis zurück und verwirft einen möglichen Rest. Der Rest kann mit dem Modulo-Operator
%
berechnet werden. Integer-Division durch null löst einen
ZeroDivisionError
aus. Fließkommadivision durch null gibt plus oder minus
Infinity
zurück. Fließkommadivision von null durch null gibt
NaN
zurück. Siehe „3.1.3 Arithmetik in Ruby“ für weitere Details über Rubys Integer- und Fließkomma-Arithmetik.
    Die Klasse
String
verwendet den Operator
+
zur String-Verkettung, den Operator
*
zur String-Wiederholung und den Operator
%
zur
sprintf
-Argumentsubstitution in einem String.
    Die Klasse
Array
verwendet
+
zur Array-Verkettung und
-
zur Array-Subtraktion.
Array
verwendet den Operator
*
auf unterschiedliche Weise, abhängig von der Klasse des zweiten Operanden. Wird ein Array mit einer Zahl »multipliziert«, dann ist das Ergebnis ein neues Array, das den Inhalt des Array-Operanden entsprechend oft wiederholt. Aber wenn ein Array mit einem String multipliziert wird, geschieht dasselbe wie beim Aufruf der
join
-Methode des Array mit dem String als Argument.
    4.6.4 Verschieben und Anhängen: << und >>
    Die Klassen
Fixnum
und
Bignum
definieren die Operatoren
<<
und
>>
, um die Bits des linken Arguments nach links beziehungsweise nach rechts zu verschieben. Das rechte Argument ist die Anzahl der Positionen, um die die Bits verschoben werden sollen, und negative Werte sorgen für eine Verschiebung in die jeweils andere Richtung: Eine Linksverschiebung um
−2
ist dasselbe wie eine Rechtsverschiebung um
2
. Höherrangige Bits werden niemals »herausgeschoben«, wenn eine
Fixnum
nach links verschoben wird. Wenn das Ergebnis einer Verschiebung nicht in eine
Fixnum
passt, wird ein
Bignum
-Wert zurückgegeben. Rechtsverschiebungen verwerfen dagegen immer die niedrigerwertigen Bits des Arguments.
    Das Verschieben einer Zahl um
1
Bit nach links ist dasselbe wie Multiplikation mit
2
. Das Verschieben einer Zahl um
1
Bit nach rechts ist dasselbe wie Integer-Division durch
2
. Hier sehen Sie zwei Beispiele, die Zahlen in binärer Schreibweise darstellen und ihre Ergebnisse dann zurück in die binäre Form konvertieren:
(0b1011 << 1).to_s(2) # => "10110" 11 << 1 => 22
(0b10110 >> 2).to_s(2) # => "101" 22 >> 2 => 5
    Der Operator
<<
wird auch zum Anhängen verwendet und ist in dieser Form wahrscheinlich bekannter. Die Klassen
String
,
Array
und
IO
definieren ihn auf diese Weise, genau wie eine Reihe anderer »anhängbarer« Klassen aus der Standardbibliothek, etwa
Queue
und
Logger
:
message = "hallo" # Ein String
messages = [] # Ein leeres Array
message << " world" # An den String anhängen
messages << message # message an das Array anhängen
STDOUT << message # message auf dem Standard-Output-Datenstrom ausgeben
    4.6.5 Komplement, Vereinigungs- und Schnittmenge: ~, &, |, und ^
    Fixnum
und
Bignum
definieren diese Operatoren, um die bitweisen Operationen NOT, AND, OR und XOR auszuführen.
~
ist ein hochrangiger unärer Operator, die anderen sind binäre Operatoren mit mittlerem Rang.
    ~
ändert jedes
0
-Bit seines Integer-Operanden in eine
1
und jedes
1
-Bit in eine
0
, wodurch das binäre Einerkomplement einer Zahl entsteht. Für jeden Integer
x
ist
~x
dasselbe wie
-x-1
.
    &
ist der bitweise AND-Operator für zwei Zahlen. Die Bits des Ergebnisses werden nur dann auf
1
gesetzt, wenn das entsprechende Bit in beiden Operanden den Wert
1
hat, zum Beispiel
(0b1010 & 0b1100).to_s(2) # => "1000"
    |
ist der bitweise OR-Operator für zwei Integer. Ein Bit im Ergebnis ist
1
, wenn das entsprechende Bit in mindestens einem Operanden
1
ist, zum Beispiel
(0b1010 | 0b1100).to_s(2) # => "1110"
    ^
ist das bitweise XOR (Exklusiv-OR) für Integer. Ein Bit im Ergebnis ist
1
, wenn eines der entsprechenden Bits (aber nicht beide) in den Operanden
1
ist, zum Beispiel
(0b1010 ^ 0b1100).to_s(2) # => "110"
    Auch andere Klassen verwenden diese Operatoren, üblicherweise so, dass sie mit ihrer logischen AND-, OR- beziehungsweise NOT-Bedeutung kompatibel sind. Arrays verwenden
&
und
|
für Schnittmengen- beziehungsweise Vereinigungsmengenoperationen. Wenn
&
auf zwei Arrays angewendet wird, liefert es ein neues Array zurück, das nur diejenigen Elemente zurückliefert, die sowohl im linken als auch im rechten Array vorkommen. Wird
|
auf zwei Arrays angewendet, liefert es ein neues Array zurück, das

Weitere Kostenlose Bücher