Funktionen |
geben den Wert des letzten ausgewerteten
Ausdrucks als Resultat zurück
|
Funktionsdefinition |
def hello(name)
"hello " + name
end
|
Funktionsaufruf |
hello "you"
hello "world"
|
Funktionen mit mehreren Resultaten |
def plusMinus(x,y)
[x + y, x - y]
end
|
Variante |
def plusMinus(x,y)
return x + y, x - y
end
|
puts, p und printf |
eine eingebaute Funktion für die Ausgabe auf stdout
|
|
puts (hello "world")
hello world
p (hello "world")
hello world
printf("Die Antwort ist %d\n", 42)
Die Antwort ist 42
|
| |
Klassen |
enthalten eine Menge von Methoden und Instanzvariablen
|
Klassendefinition |
class Url
def initialize(host, port, path)
@host = host
@port = port.nil? ? 80 : port
@path = path
end
def host
@host
end
def port
@port
end
def path
@path
end
def to_s
"http://" + @host + ":" + @port.to_s + @path
end
end
|
| |
Objekterzeugung und Methodenaufrufe |
u = Url.new("localhost",8080,"/abc/def.html")
u.host
u.port
u.path
u.to_s
u.inspect
u.methods.sort
|
| |
Vererbung |
class SimpleUrl < Url
def initialize(host, path)
super(host,nil,path)
end
def to_s
"http://" + @host + @path
end
end
|
| |
Vererbungshierachie |
erfragen mit .superclass und .is_a?
|
|
1.class
1.class.superclass
1.class.superclass\
.superclass
1.class.superclass\
.superclass\
.superclass
1.class.superclass\
.superclass\
.superclass\
.superclass
1.is_a? Fixnum
1.is_a? Integer
1.is_a? Object
1.is_a? String
|
Objekterzeugung und Methodenaufrufe |
v = SimpleUrl.new("w3c","/index")
v.host
v.port
v.path
v.to_s
|
| |
Klassenmethoden |
class Url
def initialize(host, port, path)
@host = host
@port = port.nil? ? 80 : port
@path = path
end
def Url.simpleUrl(host, path)
Url.new(host, nil, path)
end
...
def to_s
"http://" +
@host +
(@port == 80 ? "" : ":" + @port.to_s) +
@path
end
end
|
|
Java Sparchgebrauch: Statische Methoden anstatt direkte Konstruktoraufrufe.
|
|
Muster für Klassen mit mehreren Konstruktoren.
|
| |