Was ist Ruby?
Ruby wurde Mitte der 1990er von Yukihiro "Matz" Matsumoto entworfen mit dem Ziel, Programmierer glücklich zu machen. Sie ist rein objektorientiert (selbst Zahlen sind Objekte), dynamisch typisiert und sehr ausdrucksstark. Bekannt wurde sie durch Ruby on Rails (Webframework), sie wird aber auch für Skripte, Automatisierung (Chef, Homebrew, Jekyll) und Tests (RSpec) eingesetzt.
Installation und Ausführen
- Linux/macOS: Paketmanager oder
rbenv/asdf; Windows: RubyInstaller - Prüfen:
ruby -v
ruby hallo.rb # Datei ausführen
ruby -e 'puts 1 + 2' # eine Zeile
irb # interaktive Konsole
gem install rails # Paket (Gem) installierenDas erste Programm
puts "Hallo Ruby!"
name = "Mia"
puts "Hallo, #{name}!"
print "ohne Zeilenumbruch"
puts
p "p zeigt Debug-Darstellung"Hallo Ruby! Hallo, Mia! ohne Zeilenumbruch "p zeigt Debug-Darstellung"
putsgibt Text mit Zeilenumbruch aus,printohne,pzeigt eine Debug-Darstellung (mit Anführungszeichen)#{...}fügt Ausdrücke in Strings mit doppelten Anführungszeichen ein- Kommentare beginnen mit
#; mehrzeilig:=begin ... =end - Klammern bei Methodenaufrufen sind meist optional
Alles ist ein Objekt
puts 5.class
puts 3.14.class
puts "text".class
puts nil.class
puts :symbol.class
puts [1, 2].class
puts (1..3).class
puts 5.even?
puts -7.abs
puts 10.0.floor
puts 3.times.to_a.inspect
puts "ruby".upcase.reverse
puts 5.respond_to?(:+)Integer Float String NilClass Symbol Array Range false 7 10 [0, 1, 2] YBUR true
Methoden mit ? am Ende liefern meist true/false, solche mit ! verändern das Objekt (z. B. sort!).
Eingabe
zeile = "Mia 17".split
name, alter = zeile
puts "#{name} ist #{alter.to_i + 1} im nächsten Jahr"
# Interaktiv: name = gets.chompMia ist 18 im nächsten Jahr
So führst du den Code aus: Datei hallo.rb speichern und mit ruby hallo.rb starten, interaktiv mit irb.
Merke
- Ruby ist rein objektorientiert: alles ist ein Objekt
puts,print,p;#{...}für String-Interpolation- Klammern sind optional, Methodennamen mit
?und!haben Konventionen irbzum Ausprobieren,gemfür Pakete
Aufgabe
Gib Name, Alter und Lieblingsfarbe mit Interpolation aus.