Menu
Coddy logo textTech

Ruby Spickzettel

Zuletzt aktualisiert

Hello World & Code ausführen

Ruby braucht keine Boilerplate - eine einzige Zeile läuft.

OperationSyntax
Mit Zeilenumbruch ausgebenputs "Hello, World!"
Ohne Zeilenumbruch ausgebenprint "Hello"
Einen Wert inspizierenp [1, 2, 3]
String-Interpolationputs "Hi #{name}"
Kommentar# this is a comment
Mehrzeiliger Kommentar=begin ... =end
Eine Datei ausführenruby app.rb
Interaktive Shellirb

Variablen & Typen

Ruby ist dynamisch typisiert; alles ist ein Objekt.

OperationSyntax
Lokale Variableage = 30
KonstantePI = 3.14
Instanzvariable@name = "Ada"
Globale Variable$count = 0
Symbol:status
Nil / Booleannil, true, false
Typ prüfen42.class gibt Integer zurück
Typ umwandeln"42".to_i, 42.to_s, "3.5".to_f

Strings

Strings sind veränderliche Objekte mit einem reichhaltigen Methodensatz.

OperationSyntax
Länge"hello".length
Groß-/Kleinschreibungs.upcase, s.downcase
Leerzeichen entfernens.strip
Ersetzens.gsub("a", "b")
In Array aufteilen"a,b,c".split(",")
Enthält Teilstrings.include?("ell")
Zeichen ausschneidens[0..2]
Verketten"foo" + "bar", s << "!"
Wiederholen"ab" * 3
Formatierenformat("%05d", 42)

Arrays

Geordnete, ganzzahlig indizierte Collections.

OperationSyntax
Erstellennums = [1, 2, 3]
Zugriff per Indexnums[0], nums[-1]
Am Ende hinzufügennums.push(4), nums << 4
Vom Ende entfernennums.pop
Längenums.length
Mapnums.map { |n| n * 2 }
Filternnums.select { |n| n.even? }
Reducenums.reduce(0) { |sum, n| sum + n }
Sortierennums.sort
Zu String zusammenfügennums.join(", ")

Hashes

Schlüssel-Wert-Collections, oft mit Symbolen als Schlüssel.

OperationSyntax
Erstellenuser = { name: "Ada", age: 30 }
Wert lesenuser[:name]
Wert setzenuser[:email] = "a@x.com"
Schlüssel prüfenuser.key?(:name)
Schlüssel löschenuser.delete(:age)
Schlüssel / Werteuser.keys, user.values
Durchlaufenuser.each { |k, v| puts "#{k}: #{v}" }
StandardwertHash.new(0)
Zusammenführenh1.merge(h2)

Kontrollfluss

Bedingungen und Schleifen; beachte Rubys nachgestellte Modifizierer.

OperationSyntax
If / elsif / elseif x > 0 ... elsif x < 0 ... else ... end
Inline-if (Modifizierer)puts "hi" if ready
Unlessunless done ... end
Ternärx > 0 ? "pos" : "neg"
Case / whencase n; when 1 then ...; else ...; end
While-Schleifewhile i < 10 ... end
Until-Schleifeuntil done ... end
Times5.times { |i| puts i }
Bereichsiteration(1..5).each { |i| puts i }
Break / nextbreak, next

Methoden

Der letzte Ausdruck wird implizit zurückgegeben.

OperationSyntax
Eine Methode definierendef add(a, b) ... end
Impliziter Returndef square(x) x * x end
Standardargumentdef greet(name = "World") ... end
Schlüsselwortargumentedef box(w:, h:) ... end
Splat (variadisch)def sum(*nums) ... end
Methode endet auf ?def valid? ... end
Methode endet auf !def normalize! ... end
Aufruf ohne Klammerngreet "Ada"

Blöcke, Procs & Lambdas

Blöcke sind Codeabschnitte, die an Methoden übergeben werden; Procs und Lambdas speichern sie.

OperationSyntax
Block (geschweifte Klammern)[1, 2].each { |n| puts n }
Block (do/end)[1, 2].each do |n| puts n end
An einen Block yieldendef run; yield; end
Prüfen, ob Block übergebenblock_given?
Block als Parameter erfassendef run(&blk); blk.call; end
Einen Proc erstellensquare = proc { |x| x * x }
Ein Lambda erstellensquare = ->(x) { x * x }
Einen Proc / ein Lambda aufrufensquare.call(3), square.(3)

Klassen & Module

Klassen halten Zustand und Verhalten; Module mischen gemeinsame Methoden ein.

OperationSyntax
Eine Klasse definierenclass Point ... end
Konstruktordef initialize(x, y) @x = x; @y = y; end
Instanzmethodedef dist ... end
Accessor-Kurzformenattr_accessor :x, :y
Instanz erstellenp = Point.new(1, 2)
Erbenclass Circle < Shape ... end
Klassenmethodedef self.origin ... end
Ein Modul definierenmodule Drawable ... end
Ein Modul einmischeninclude Drawable
super aufrufensuper(args)

Die Ruby-Syntax, die du am häufigsten brauchst, auf einer Seite. Dieser Ruby-Spickzettel ist eine Schnellreferenz für die Kernsprache - Variablen und Typen, Strings, Arrays und Hashes, Kontrollfluss, Methoden sowie die Blöcke, Procs und Lambdas, die Ruby so ausdrucksstark machen.

Alles hier ist reines Ruby und läuft auf jedem Standard-Interpreter. Kopiere, was du brauchst, oder probiere jeden Codeschnipsel live im Ruby-Playground aus - keine Installation nötig.

Ruby-Spickzettel FAQ

Ist dieser Ruby-Spickzettel kostenlos?
Ja. Dieser Ruby-Spickzettel ist völlig kostenlos, ohne erforderliche Anmeldung. Setze ein Lesezeichen und komm jederzeit wieder, wenn du eine String-Methode, eine Hash-Operation oder eine Block-Syntax nachschlagen möchtest.
Was ist der Unterschied zwischen einem Block, einem Proc und einem Lambda?
Ein Block ist ein anonymer Codeabschnitt, der einer Methode mit { ... } oder do ... end übergeben wird - er ist für sich allein kein Objekt. Ein proc verpackt einen Block in ein aufrufbares Objekt, das du speichern und herumreichen kannst. Ein lambda ist ein spezieller Proc, der seine Argumentanzahl streng prüft und return so behandelt, dass es aus dem Lambda selbst zurückkehrt, während ein einfacher Proc aus der umschließenden Methode zurückkehrt.
Was sind Symbole in Ruby?
Ein Symbol wie :name ist ein unveränderlicher, wiederverwendbarer Bezeichner. Da dasselbe Symbol immer auf dasselbe Objekt im Speicher zeigt, sind Symbole für Dinge wie Hash-Schlüssel und Methodennamen schneller und speichereffizienter als Strings - weshalb du Hashes oft als { name: "Ada" } geschrieben siehst.
Kann ich Ruby online üben?
Ja. Öffne den Ruby-Playground, um jeden Codeschnipsel aus diesem Spickzettel in deinem Browser auszuführen - keine Ruby-Installation nötig. Wenn du Struktur möchtest, führt dich Coddys kostenloser interaktiver Ruby-Kurs Schritt für Schritt von Variablen und Strings zu Blöcken und Klassen.
Ist dieser Spickzettel für Anfänger geeignet?
Ja. Er ist von den häufigsten Themen (Variablen, Strings, Kontrollfluss) hin zu den fortgeschrittenen (Blöcke, Procs, Klassen) gegliedert, sodass du die oberen Abschnitte schon am ersten Tag nutzen und in den Rest hineinwachsen kannst.
Coddy programming languages illustration

Lerne Ruby mit Coddy

LOS GEHT'S