Ruby-Datentypen

In diesem Kapitel stellen wir die grundlegenden Datentypen von Ruby vor.

Die von Ruby unterstützten Datentypen umfassen die grundlegenden Number, String, Ranges, Symbols sowie die speziellen Werte true, false und nil und zwei wichtige Datenstrukturen - Array und Hash.


Numerische Typen (Number)

1. Ganzzahlen

Es gibt zwei Arten von Ganzzahlen. Wenn sie innerhalb von 31 Bits (vier Bytes) liegen, handelt es sich um eine Fixnum-Instanz. Wenn sie darüber hinausgehen, handelt es sich um eine Bignum-Instanz.

Der Ganzzahlbereich reicht von -230bis 230-1, und Ganzzahlen in diesem Bereich sind Objekte der KlasseFixnum. Wenn der Ganzzahlwert größer oder gleich 2 hoch 30 ist ( -262bis 262-1), wird er automatisch in den Typ Bignum konvertiert.

Sie können ein optionales führendes Vorzeichen vor der Ganzzahl verwenden, eine optionale Basisangabe (0 für Oktal, 0x für Hex, 0b für Binär), gefolgt von einer Reihe von Ziffern. Unterstriche werden in der numerischen Zeichenkette ignoriert.

Sie können den Ganzzahlwert eines ASCII-Zeichens oder einer mit einem Fragezeichen markierten Escape-Sequenz abrufen.

Beispiel

123 #Fixnum dezimal 1_234 #Fixnum dezimal mit Unterstrichen -500 #Negatives Fixnum 0377 #Oktal 0xff #Hexadezimal 0b1011 #Binär "a".ord #Der Zeichencode von "a" ?\n #Der Code des Zeilenumbruchzeichens (0x0a) 12345678901234567890 #Große Zahl #Ganzzahl. Im Folgenden sind einige Ganzzahl-Literale aufgeführt. #Literal: Werte, die im Code zu sehen sind - Zahlen, boolesche Werte, Zeichenketten usw. - werden Literale genannt. #Zum Beispiel 0, 1_000_000, 0xa usw. a1=0 #Ganzzahl mit Tausendertrennzeichen a2=1_000_000 #Darstellung in anderen Basen a3=0xa puts a1,a2 puts a3 #puts und print geben beide Zeichen auf der Konsole aus, wobei puts einen Zeilenumbruch enthält. =beginDies ist ein Kommentar, genannt eingebetteter Dokumentkommentar, ähnlich demC#/**/ in =end

Gleitkommatyp

Ruby unterstützt Gleitkommazahlen. Sie sind Zahlen mit Dezimalbrüchen. Gleitkommazahlen sind Objekte der KlasseFloatund können eine der folgenden sein.

Beispiel

Beispiel

123.4 #Gleitkommawert 1.0e6 #Wissenschaftliche Notation 4E20 #Nicht erforderlich 4e+20 #Vorzeichen vor dem Exponenten #Gleitkommatyp f1=0.0 f2=2.1 f3=1000000.1 puts f3

Arithmetische Operationen

Additions-, Subtraktions-, Multiplikations- und Divisionsoperatoren: + - * /; Exponentenoperator ist **

Der Exponent muss keine ganze Zahl sein, zum Beispiel

Beispiel

#Exponentenarithmetik puts 2**(1/4) # Der Quotient von 1 und 4 ist 0, dann ist 2 hoch 0 gleich 1 puts 16**(1/4.0)#Der Quotient von 1 und 4.0 ist 0.25 (ein Viertel), dann ziehe die vierte Wurzel.

String-Typ

Ein Ruby-String ist einfach eine Folge von 8-Bit-Bytes, und sie sind Objekte der Klasse String.

Durch doppelte Anführungszeichen begrenzte Strings erlauben Substitution und die Verwendung von Backslash-Notationen; durch einfache Anführungszeichen begrenzte Strings erlauben keine Substitution und nur zwei Backslash-Notationen: \\ und \'.

Beispiel

#!/usr/bin/ruby -w puts 'Escape mit "\\"'; puts 'Das\'ist richtig';

Ausprobieren »

Dies erzeugt das folgende Ergebnis:

escape using "\"
That's right

Sie können die Sequenz#{ expr }verwenden, um den Wert eines beliebigen Ruby-Ausdrucks in einen String einzusetzen. Hier kann expr ein beliebiger Ruby-Ausdruck sein.

Beispiel

#!/usr/bin/ruby -w puts "Multiplizieren: #{24*60*60}";

Dies erzeugt das folgende Ergebnis:

相乘 : 86400

Beispiel

#!/usr/bin/ruby -w name="Ruby" puts name puts "#{name+",ok"}"

Das Ausgabeergebnis ist:

Ruby
Ruby,ok

Backslash-Notationen

Die folgende Tabelle listet die von Ruby unterstützten Backslash-Notationen auf:

NotationenDargestelltes Zeichen
\nZeilenumbruch (0x0a)
\rWagenrücklauf (0x0d)
\fSeitenvorschub (0x0c)
\bRücktaste (0x08)
\aGlocke (0x07)
\eEscape (0x1b)
\sLeerzeichen (0x20)
\nnnOktalschreibweise (n ist 0-7)
\xnnHexadezimalschreibweise (n ist 0-9, a-f oder A-F)
\cx, \C-xStrg-x
\M-xMeta-x (c | 0x80)
\M-\C-xMeta-Strg-x
\xZeichen x

Für weitere Details zu Ruby-Strings sieheRuby String。

Arrays

Array-Literale werden durch kommagetrennte Werte innerhalb von [] definiert und unterstützen auch Bereichsdefinitionen.

  • (1) Auf Arrays wird über den Index mit [] zugegriffen
  • (2) Einfügen, Löschen und Ersetzen von Elementen durch Zuweisungsoperationen
  • (3) Verwenden Sie + und -, um Elemente zusammenzuführen und zu entfernen, und die Sammlung wird als neue Sammlung zurückgegeben.
  • (4) Das <<-Zeichen hängt Elemente an die Originaldaten an.
  • (5) Das *-Zeichen wiederholt Array-Elemente.
  • (6) Die Symbole | und & werden für Vereinigungs- und Schnittmengenoperationen verwendet (achten Sie auf die Reihenfolge).

Beispiel

#!/usr/bin/ruby ary = [ "fred", 10, 3.14, "Dies ist ein String", "letztes Element", ] ary.each do |i| puts i end

Ausprobieren »

Dies erzeugt das folgende Ergebnis:

fred
10
3.14
This is a string
last element

Weitere Details zu Ruby-Arrays finden Sie unterRuby-Array。

Hash-Typ

Ein Ruby-Hash ist eine Reihe von Schlüssel-Wert-Paaren in geschweiften Klammern, wobei Schlüssel und Werte durch Kommas und die Sequenz => getrennt werden. Nachgestellte Kommas werden ignoriert.

Beispiel

Beispiel

#!/usr/bin/ruby hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f } hsh.each do |key, value| print key, " ist ", value, "\n" end

Ausprobieren »

Dies erzeugt das folgende Ergebnis:

red is 3840
green is 240
blue is 15

Weitere Details zu Ruby-Hashes findest du unterRuby Hash。

Range-Typ

Ein Range repräsentiert ein Intervall.

Ein Range wird durch Festlegen eines Startwerts und eines Endwerts dargestellt. Ranges können mit s..e und s...e oder über Range.new konstruiert werden.

Ein mit .. konstruierter Range läuft vom Startwert bis zum Endwert (inklusive). Ein mit ... konstruierter Range läuft vom Startwert bis zum Endwert (exklusiv). Wenn er als Iterator verwendet wird, gibt der Range jeden Wert in der Sequenz zurück.

Der Range (1..5) bedeutet, dass er die Werte 1, 2, 3, 4, 5 enthält, und der Range (1...5) bedeutet, dass er die Werte 1, 2, 3, 4 enthält.

Beispiel

#!/usr/bin/ruby (10..15).each do |n| print n, ' ' end

Ausprobieren »

Dies erzeugt das folgende Ergebnis:

10 11 12 13 14 15

Weitere Details zu Ruby-Ranges findest du unterRuby Range。

Andere Erweiterungen