instance methods
|
==
|
obj == einObjekt-> true oder false |
|
Gleichheit---Auf dem Objekt -Level gibt == true
zurück, wenn obj und einObjekt das selbe Objekt sind. Diese Methode
wird in abgeleiteten Klassen typischerweise überschrieben, um eine
Klassen-spezifische Bedeutung
einzubringen.
|
===
|
obj === einObjekt-> true oder false |
|
Fallgleichheit---Synonym für Object#== .
Jedoch wird auch diese Methode durch abgeleitete Klassen typischerweise überschrieben, um
eine sinnvolle Semantik in case -Anweisungen zu ermöglichen.
|
=~
|
obj =~ einObjekt-> false |
|
Mustervergleich---Wird durch abgeleitete Klassen überschrieben (insbesondere bei Regexp
und String ) um sinnvolle Mustervergleichs-Semantik zu erhalten.
|
__id__
|
obj.__id__
-> eineFixnum |
|
Synonym für Object#id .
|
__send__
|
obj.__send__(
einSymbol[, args]+ ) -> einObjekt |
|
Synonym für Object#send .
|
class
|
obj.class -> eineKlasse |
|
Gibt die Klasse von obj zurück (synonym für Object#type ).
|
clone
|
obj.clone -> einObjekt |
|
Erstellt eine flache Kopie von obj---es werden nur die Instanzvariablen von obj
kopiert, jedoch nicht die durch sie referenzierten Objekte.
Kopiert eingefrorene und ``tainted'' Zustände von obj. Vgl. auch die Diskussion bei
Object#dup .
class Klass |
attr_accessor :str |
end |
s1 = Klass.new |
» |
#<Klass:0x4018d234> |
s1.str = "Hello" |
» |
"Hello" |
s2 = s1.clone |
» |
#<Klass:0x4018d194 @str="Hello"> |
s2.str[1,4] = "i" |
» |
"i" |
s1.inspect |
» |
"#<Klass:0x4018d234 @str=\"Hi\">" |
s2.inspect |
» |
"#<Klass:0x4018d194 @str=\"Hi\">" |
|
display
|
obj.display( port=$> )
-> nil |
|
Gibt obj am angegebenen Port aus (Standardeinstellung für den Port ist $> ).
Equivalent mit:
def display(port=$>)
port.write self
end
|
|
dup
|
obj.dup -> einObjekt |
|
Erstellt eine flache Kopie von obj---es werden die Instanzvariablen von
obj kopiert, jedoch nicht die durch sie referenzierten Objekte. dup
kopiert den ``tainted''-Status von obj. Vgl. auch Kapitel ``Ruby im Tresor sichern''
sowie die Diskussion bei Object#clone .
Generell stehen clone und dup für verschiedene semantische Kontexte
in abgeleiteten Klassen. Während clone angesprochen wird, um ein Objekt mitsamt
seinem internen Zustand zu duplizieren, verwendet dup typischerweise die
Klasse des abgleiteten Objekts um eine neue Instanz zu erstellen.
|
eql?
|
obj.eql?( einObjekt )
-> true oder false |
|
Gibt true zurück, wenn obj und einObjekt denselben
Wert haben. Wird von Hash benutzt, um Elemente auf Gleichheit zu
prüfen. Für Objekte der Klasse Object ist eql? synonym
zu == . Unterklassen setzten diese Tradition normalerweise fort, jedoch gibt es
Ausnahmen. Zum Beispiel führen Numeric -Typen eine Typkonversion zwar
über == aus, jedoch nicht über eql? , so dass:
1 == 1.0 |
» |
true |
1.eql? 1.0 |
» |
false |
|
equal?
|
obj.equal?( einObjekt )
-> true oder false |
|
Gibt true zurück, wenn obj und einObjekt dieselbe
Objekt ID besitzen. Diese Methode sollte durch Unterklassen nicht überschrieben werden.
a = [ 'cat', 'dog' ] |
b = [ 'cat', 'dog' ] |
a == b |
» |
true |
a.id == b.id |
» |
false |
a.eql?(b) |
» |
true |
a.equal?(b) |
» |
false |
|
extend
|
obj.extend( [einModul]+ )
-> obj |
|
Fügt die Instanzmethoden jedes als Parameter übergebenen Moduls zu obj hinzu.
module Mod |
def hello |
"Hello from Mod.\n" |
end |
end |
|
class Klass |
def hello |
"Hello from Klass.\n" |
end |
end |
|
k = Klass.new |
k.hello |
» |
"Hello from Klass.\n" |
k.extend(Mod) |
» |
#<Klass:0x4018d414> |
k.hello |
» |
"Hello from Mod.\n" |
|
freeze
|
obj.freeze -> obj |
|
Verhindert weitere Modifikationen an obj. Bei dem Versuch wird ein
TypeError geworfen. Ein eingefrorenes Objekt kann nicht wieder
``aufgetaut'' werden.
Siehe auch Object#frozen? .
a = [ "a", "b", "c" ]
a.freeze
a << "z"
|
ergibt:
prog.rb:3:in `<<': can't modify frozen array (TypeError)
from prog.rb:3
|
|
frozen?
|
obj.frozen?
-> true oder false |
|
Gibt den Einfrierstatus von obj zurück.
a = [ "a", "b", "c" ] |
a.freeze |
» |
["a", "b", "c"] |
a.frozen? |
» |
true |
|
hash
|
obj.hash -> eineFixnum |
|
Generiert einen Fixnum Hash-Wert für dieses Objekt. Diese Funktion
muss die Eigenschaft a.eql?(b) impliziert a.hash == b.hash besitzen.
Der Hash-Wert wird von Hash benutzt. Jeder Hash-Wert, der den Zahlenraum
einer Fixnum übersteigt, wird vor der Benutzung abgeschnitten.
|
id
|
obj.id -> eineFixnum |
|
Gibt eine ganzzahlige Kennung für obj zurück. Jeder Aufruf von id gibt
für ein gegebenes Objekt dieselbe Kennung wieder. Zwei aktive Objekte können nicht dieselbe
Kennung besitzen. Das Konzept der Object#id
weicht von der :name -Notation, die die Symbol-ID von name zurück gibt, ab.
|
inspect
|
obj.inspect -> einString |
|
Gibt einen String zurück, der eine menschenlesbare Repräsentation von obj
zurück gibt. Falls die Methode nicht überschrieben wurde, wird to_s genutzt,
um den String zu erstellen.
[ 1, 2, 3..4, 'five' ].inspect |
» |
"[1, 2, 3..4, \"five\"]" |
Time.new.inspect |
» |
"Sun Mar 04 23:29:19 CST 2001" |
|
instance_eval
|
obj.instance_eval(einString[, datei[zeile]] )
-> einObjekt obj.instance_eval {| | block }-> einObjekt |
|
Evaluiert einen String, der Ruby-Quellcode enthält, bzw. den angegebenen Codeblock im Kontext
des Empfängers (hier obj). Um den Kontext zu setzen, erhält self für
die Dauer der Ausführung den Wert obj, wodurch der Code auf die Instanzvariablen
von obj zugreifen kann.
In der Version von instance_eval , die einen String zur
Ausführung erhält, können mit den optionalen Parametern datei und zeile
ein Dateinamen sowie die Anfangszeile angegeben werden, die für die Ausgabe von Compile-Fehlern
verwendet werden.
class Klass |
def initialize |
@secret = 99 |
end |
end |
k = Klass.new |
k.instance_eval { @secret } |
» |
99 |
|
instance_of?
|
obj.instance_of?( eineKlasse )
-> true oder false |
|
Gibt true zurück, wenn obj eine Instanz der angegebenen Klasse ist.
Siehe auch Object#kind_of? .
|
instance_variables
|
obj.instance_variables
-> einArray |
|
Gibt ein Array mit den Instanzvariablennamen des Empfängers zurück.
|
is_a?
|
obj.is_a?( eineKlasse )
-> true oder false |
|
Synonym für Object#kind_of? .
|
kind_of?
|
obj.kind_of?( eineKlasse )
-> true oder false |
|
Gibt true zurück, wenn obj vom Typ eineKlasse ist bzw.
wenn eineKlasse eine Oberklasse von obj oder ein in obj
eingebundenes Modul ist.
a = Integer.new |
a.instance_of? Numeric |
» |
false |
a.instance_of? Integer |
» |
true |
a.instance_of? Fixnum |
» |
false |
a.instance_of? Comparable |
» |
false |
a.kind_of? Numeric |
» |
true |
a.kind_of? Integer |
» |
true |
a.kind_of? Fixnum |
» |
false |
a.kind_of? Comparable |
» |
true |
|
method
|
obj.method( einSymbol )
-> eineMethode |
|
Sucht die genannte Methode als Empfänger in obj und gibt ein entsprechendes
Method -Objekt zurück (bzw. wirft einen NameError ).
Das Method -Objekt bewirkt eine Schließung der Objektinstanz in
obj, so dass die Instanzvariablen und der Wert von self erhalten
bleiben.
class Demo |
def initialize(n) |
@iv = n |
end |
def hello() |
"Hello, @iv = [email protected]}" |
end |
end |
|
k = Demo.new(99) |
m = k.method(:hello) |
m.call |
» |
"Hello, @iv = 99" |
|
l = Demo.new('Fred') |
m = l.method("hello") |
m.call |
» |
"Hello, @iv = Fred" |
|
method_missing
|
obj.method_missing( einSymbol[, *args] )
-> einObjekt |
|
Wird von Ruby aufgerufen, wenn obj einen Aufruf erhält, den es nicht verarbeiten
kann. einSymbol ist das Symbol der aufgerufenen Methode und args sind
etwaige übergebene Argumente. Das unten gezeigte Beispiel erstellt eine Klasse Roman ,
die Methodenaufrufe in der Form römischer Ziffern durch Ausgabe der entsprechenden Ganzzahl
beantwortet.
class Roman
def romanToInt(str)
# ...
end
def method_missing(methId)
str = methId.id2name
romanToInt(str)
end
end
|
r = Roman.new |
r.iv |
» |
4 |
r.xxiii |
» |
23 |
r.mm |
» |
2000 |
|
methods
|
obj.methods -> einArray |
|
Gibt eine Liste der öffentlich zugänglichen Methoden in obj zurück.
Die öffentlichen Methoden der Vorfahren von obj sind eingeschlossen.
class Klass |
def kMethod() |
end |
end |
k = Klass.new |
k.methods[0..9] |
» |
["kMethod", "instance_of?", "protected_methods", |
|
|
"inspect", "freeze", "dup", "__id__", "equal?", |
|
|
"send", "=="] |
k.methods.length |
» |
38 |
|
nil?
|
obj.nil? -> true oder false |
|
Alle Objekte ausser nil geben hier false zurück.
|
private_methods
|
obj.private_methods
-> einArray |
|
Gibt eine Liste der privat zugänglichen Methoden in obj zurück. Die privaten
Methoden der Vorfahren von obj werden ebenso mitgegeben wie Methoden aus den
eventuelle eingebundenen Modulen.
|
protected_methods
|
obj.protected_methods
-> einArray |
|
Gibt eine Liste der geschützten Methoden in obj zurück.
|
public_methods
|
obj.public_methods -> einArray |
|
Synonym für Object#methods .
|
respond_to?
|
obj.respond_to?( einSymbol,
schliessePrivEin=false )
-> true oder false |
|
Gibt true zurück, wenn obj den angegebenen Aufruf beantwortet.
Private Methoden werden nur in die Suche eingeschlossen, wenn im optionalen zweiten Parameter
true steht.
|
send
|
obj.send( einSymbol[, args]* ) -> einObjekt |
|
Ruft die mit einSymbol bezeichnete Methode auf und übergibt ihr etwaige
Argumente. Es kann auch __send__ verwendet werden, wenn der Name
send mit einer bestehenden Methode in obj kollidiert.
class Klass |
def hello(*args) |
"Hello " + args.join(' ') |
end |
end |
k = Klass.new |
k.send :hello, "gentle", "readers" |
» |
"Hello gentle readers" |
|
singleton_methods
|
obj.singleton_methods
-> einArray |
|
Gibt ein Array mit allen Singletonmethoden in obj zurück.
class Klass |
def Klass.classMethod |
end |
end |
k = Klass.new |
def k.sm() |
end |
Klass.singleton_methods |
» |
["classMethod"] |
k.singleton_methods |
» |
["sm"] |
|
taint
|
obj.taint -> obj |
|
Markiert obj als ``tainted'' (vgl. Kapitel 20 ``Ruby im Tresor sichern'').
|
tainted?
|
obj.tainted? -> true oder false |
|
Gibt true zurück, wenn das Objekt ``tainted'' ist (vgl. Kapitel 20
``Ruby im Tresor sichern'').
|
to_a
|
obj.to_a -> einArray |
|
Gibt eine Array-Repräsentation von obj zurück. Objekte der Klasse
Object und andere, die die Klasse nicht ausdrücklich überschreiben,
ist der Rückgabewert ein Array, das self enthält.
self.to_a |
» |
[main] |
"hello".to_a |
» |
["hello"] |
Time.new.to_a |
» |
[19, 29, 23, 4, 3, 2001, 0, 63, false, "CST"] |
|
to_s
|
obj.to_s -> einString |
|
Gibt einen String mit der Zeichendarstellung von obj zurück. Die Standardmethode
to_s gibt die Klasse sowie eine Kodierung der Objekt-ID zurück. Ein Spezialfall
ist das Top-level Objekt, das den initialen Ausführungskontext von Ruby darstellt: Hier wird
``main'' ausgegeben.
|
type
|
obj.type -> eineKlasse |
|
Gibt die Klasse von obj zurück. Equivalent zu class .
|
untaint
|
obj.untaint -> obj |
|
Entfernt die Markierung als ``tainted'' aus obj (vgl. Kapitel 20 ``Ruby im Tresor sichern'').
|