instance methods
|
<, <=, >, >=
|
modrelop einModul-> true oder false |
|
Hierarchie Abfrage---Ein Modul wird größer als ein anderes betrachtet,
wenn es in das andere Modul eingebunden wird oder eine Eltern-Klasse dieses Moduls ist.
Die übrigen Operatoren sind entsprechend definiert. Wenn zwischen den Modulen keine
Beziehung besteht, wird für alle Operatoren false zurückgegeben.
module Mixin |
end |
|
module Parent |
include Mixin |
end |
|
module Unrelated |
end |
|
Parent > Mixin |
» |
false |
Parent < Mixin |
» |
true |
Parent <= Parent |
» |
true |
Parent < Unrelated |
» |
false |
Parent > Unrelated |
» |
false |
|
<=>
|
mod <=> einModul-> -1, 0, +1 |
|
Vergleich---Gibt -1 zurück, wenn modeinModul enthält,
0 wenn mod gleich einModul ist und +1 wenn mod
in einModul enthalten ist bzw. wenn mod keine Beziehung zu
einModul hat.
|
===
|
mod === einObjekt-> true oder false |
|
Fallgleichheit---Gibt true zurück, wenn einObjekt eine
Instanz von mod bzw. von einem seiner Erben ist. Die Methode ist von
begrenztem Nutzen für Module, jedoch kann sie in case -Ausdrücken verwendet
werden, um Objekte nach Klasse einzuteilen.
|
ancestors
|
mod.ancestors -> einArray |
|
Gibt die Liste aller in mod enthaltenen Module (inclusive mod selbst)
zurück.
module Mod |
include Math |
include Comparable |
end |
|
Mod.ancestors |
» |
[Mod, Comparable, Math] |
Math.ancestors |
» |
[Math] |
|
class_eval
|
mod.class_eval( einString ) -> einObjekt mod.class_eval {| | block }-> einObjekt |
|
Synonym für Module.module_eval .
|
class_variables
|
mod.class_variables
-> einArray |
|
Gibt ein Array mit allen Klassenvariablen von mod und seinen
Vorfahren zurück.
class One |
@@var1 = 1 |
end |
class Two < One |
@@var2 = 2 |
end |
One.class_variables |
» |
["@@var1"] |
Two.class_variables |
» |
["@@var2", "@@var1"] |
|
clone
|
mod.clone -> einModul |
|
Erstellt eine neue Kopie eines Moduls.
m = Math.clone |
» |
Math |
m.constants |
» |
["PI", "E"] |
m == Math |
» |
false |
|
const_defined?
|
mod.const_defined?( einSymbol ) -> true oder false |
|
Gibt true zurück, wenn einer Konstanten mit dem übergebenen Namen
in mod definiert ist.
Math.const_defined? "PI" |
» |
true |
|
const_get
|
mod.const_get( einSymbol ) -> einObjekt |
|
Gibt den Wert der in mod definierten Konstante mit dem übergebenen Namen zurück.
Math.const_get :PI |
» |
3.141592654 |
|
const_set
|
mod.const_set( einSymbol, einObjekt )
-> einObjekt |
|
Weist der genannten Konstanten das übergebene Objekt zu und gibt dieses Objekt wieder
zurück. Wenn der angegebene Name nicht existiert, wird eine neue Konstante angelegt.
Math.const_set("HIGH_SCHOOL_PI", 22.0/7.0) |
» |
3.142857143 |
Math::HIGH_SCHOOL_PI - Math::PI |
» |
0.001264489267 |
|
constants
|
mod.constants -> einArray |
|
Gibt ein Array mit den Namen der Konstanten, auf die in mod zugegriffen werden
kann, zurück. Die Konstanten etwaiger eingeschlossener Module werden ebenfalls ausgegeben
(vgl. Beispiel am Beginn der Abschnitts).
|
included_modules
|
mod.included_modules
-> einArray |
|
Gibt die Lister der in mod eingebundenen Module zurück.
module Mixin |
end |
|
module Outer |
include Mixin |
end |
|
Mixin.included_modules |
» |
[] |
Outer.included_modules |
» |
[Mixin] |
|
instance_methods
|
mod.instance_methods(
includeSuper=false ) -> einArray |
|
Gibt ein Array mit den Namen der öffentlichen Instanzmethoden im Empfänger zurück.
Im Falle eines Moduls sind dies die öffentlichen Methoden. Bei einer Klasse sind dies
die Instanzmethoden (nicht Singleton). Wenn die Methode ohne Argument bzw. mit einem Argument,
das false gesetzt ist, aufgerufen wird, werden nur die Instanzmethoden von
mod zurück gegeben, sonst werden diejenigen von mod's Oberklassen mit
angegeben.
module A
def method1() end
end
class B
def method2() end
end
class C < B
def method3() end
end
|
A.instance_methods |
» |
["method1"] |
B.instance_methods |
» |
["method2"] |
C.instance_methods |
» |
["method3"] |
C.instance_methods(true).length |
» |
39 |
|
method_defined?
|
mod.method_defined?( einSymbol ) -> true oder false |
|
Gibt true zurück, wenn die genannten Methode in mod
(bzw. den eingebundenen Modulen und, falls mod eine Klasse ist, auch seiner
Vorfahren) definiert ist.
module A |
def method1() end |
end |
class B |
def method2() end |
end |
class C < B |
include A |
def method3() end |
end |
|
A.method_defined? :method1 |
» |
true |
C.method_defined? "method1" |
» |
true |
C.method_defined? "method2" |
» |
true |
C.method_defined? "method3" |
» |
true |
C.method_defined? "method4" |
» |
false |
|
module_eval
|
mod.module_eval( einString ) -> einObjekt mod.module_eval {| | block }-> einObjekt |
|
Evaluiert den String oder Codeblock im Kontext von mod. Diese Methode kann
dazu verwendet werden, um Methoden zu einer Klasse hinzuzufügen. module_eval
gibt das Ergebnis der Evaluierung zurück.
class Thing |
end |
a = %q{def hello() "Hello there!" end} |
Thing.module_eval(a) |
» |
nil |
Thing.new.hello() |
» |
"Hello there!" |
|
name
|
mod.name -> einString |
|
Gibt den Modulnamen von mod zurück.
|
private_class_method
|
mod.private_class_method( [einSymbol]+ )
-> nil |
|
Wandelt bestehende Klassenmethoden in private Methoden um. Wird oft genutzt, um den
default-Konstruktor new zu verstecken.
class SimpleSingleton # Not thread safe
private_class_method :new
def SimpleSingleton.create(*args, &block)
@me = new(*args, &block) if ! @me
@me
end
end
|
|
private_instance_methods
|
mod.private_instance_methods(
includeSuper=false )
-> einArray |
|
Gibt eine Liste aller in mod definierten, privaten Instanzmethoden zurück.
Wenn der optionale Parameter nicht false gesetzt ist, werden auch die Methoden
der Vorgängerklassen angegeben.
module Mod |
def method1() end |
private :method1 |
def method2() end |
end |
Mod.instance_methods |
» |
["method2"] |
Mod.private_instance_methods |
» |
["method1"] |
|
protected_instance_methods
|
mod.protected_instance_methods(
includeSuper=false )
-> einArray |
|
Gibt eine Liste aller in mod definierten, geschützten Instanzmethoden zurück.
Wenn der optionale Parameter nicht false gesetzt ist, werden auch die Methoden
der Vorgängerklassen angegeben.
|
public_class_method
|
mod.public_class_method( [einSymbol]+ )
-> nil |
|
Wandelt existierende Klassenmethoden in öffentliche Methoden um.
|
public_instance_methods
|
mod.public_instance_methods(
includeSuper=false )
-> einArray |
|
Gibt eine Liste aller in mod definierten, öffentlichen Instanzmethoden zurück.
Wenn der optionale Parameter nicht false gesetzt ist, werden auch die Methoden
der Vorgängerklassen angegeben.
|
private methods
|
alias_method
|
alias_method( newID, oldID )
-> mod |
|
Erstellt in newID eine Kopie der Methode oldID. Dies kann verwendet
werden, um den Zugriff auf überladene Methoden zu erhalten.
module Mod
alias_method :origExit, :exit
def exit(code=0)
print "Exiting with code #{code}\n"
origExit(code)
end
end
include Mod
exit(99)
|
produces:
|
append_features
|
append_features( einModul )
-> mod |
|
Wenn dieses Modul in ein anderes eingebunden ist, ruft Ruby append_features
in diesem Modul auf, das den Aufruf an das Empfängermodul in einModul weiter
gibt. Die Standardimplementierung dieser Methode ist, dass die Konstanten, Methoden und
Modulvariablen dieses Moduls zu einModul hinzugefügt werden, wenn dies nicht
bereits zuvor geschehen war bzw. eines der Vorgängermodule von einModul diese
enthält. Siehe auch
Module#include .
|
attr
|
attr( einSymbol, writable=false )
-> nil |
|
Definiert einen Attributnamen für dieses Modul, der einSymbol.id2name ist.
Ausserdem wird eine Instanzvariable (@name ) sowie eine zugehörige Zugriffsmethode,
um sie auszulesen.
Wenn das optionale Argument writabletrue gesetzt ist, wird auch
eine Methode name= generiert, um das Attribut zu setzen.
module Mod
attr :size, true
end
|
is equivalent to:
module Mod
def size
@size
end
def size=(val)
@size = val
end
end
|
|
attr_accessor
|
attr_accessor( [einSymbol]+ )
-> nil |
|
Equivalent zum Aufruf von ``attr einSymbol, true ''
für jedes einSymbol.
module Mod |
attr_accessor(:one, :two) |
end |
Mod.instance_methods.sort |
» |
["one", "one=", "two", "two="] |
|
attr_reader
|
attr_reader( [einSymbol]+ )
-> nil |
|
Erstellt Instanzvariablen und entsprechende Methoden, die den Wert der jeweiligen
Variable zurückgeben.
Equivalent zum Aufruf von ``attr :name'' für jeden der
übergebenen Namen.
|
attr_writer
|
attr_writer( [einSymbol]+ )
-> nil |
|
Erstellt eine Zugriffsmethode um einSymbol.id2name einen Wert zuzuweisen.
|
extend_object
|
extend_object( einObjekt )
-> einObjekt |
|
Erweitert das angegebene Objekt, indem die Konstanten und Methoden (als Singletonmethoden)
dieses Objekts hinzugefügt werden. Dies ist die Methode, die beim Aufruf von
Object#extend
verwendet wird.
module Picky
def Picky.extend_object(o)
if String === o
print "Can't add Picky to a String\n"
else
print "Picky added to ", o.type, "\n"
super
end
end
end
(s = Array.new).extend Picky # Call Object.extend
(s = "quick brown fox").extend Picky
|
produces:
Picky added to Array
Can't add Picky to a String
|
|
include
|
include( [einModul]+ )
-> mod |
|
Ruft Module.append_features für jeden einzelnen Parameter auf.
|
method_added
|
method_added( einSymbol )
|
|
Wird jedes Mal aufgerufen, wenn dem Empfänger eine Methode hinzugefügt wird.
module Chatty
def Chatty.method_added(id)
print "Adding ", id.id2name, "\n"
end
def one() end
end
module Chatty
def two() end
end
|
produces:
|
module_function
|
module_function( [einSymbol]* ) -> mod |
|
Erstellt Modulfunktionen für die genannten Methoden. Diese Funktionen können mit dem
Modul als Empfänger aufgerufen werden. Sie stehen auch als Instanzmethoden für Mix-In-Klassen,
zur Verfügung. Modulfunktionen sind Kopien des Originals und können daher unabhängig verändert
werden. Die Version der Instanzmethode wird in eine private Methode gewandelt. Wenn keine
Argumente angegeben werden, sind alle nachfolgend definierten Methoden betroffen.
module Mod |
def one |
"This is one" |
end |
module_function :one |
end |
class Cls |
include Mod |
def callOne |
one |
end |
end |
Mod.one |
» |
"This is one" |
c = Cls.new |
c.callOne |
» |
"This is one" |
module Mod |
def one |
"This is the new one" |
end |
end |
Mod.one |
» |
"This is one" |
c.callOne |
» |
"This is the new one" |
|
private
|
private( [einSymbol]* )
-> mod |
|
Wenn keine Argumente übergeben werden, ist die Sichtbarkeit aller nachfolgend definierten
Methoden privat.
Werden Argumente übergeben, so werden alle genannten Methoden zu privaten Methoden gewandelt.
Vgl. auch Zugriffskontrolle im Abschnitt "Die Sprache Ruby".
module Mod |
def a() end |
def b() end |
private |
def c() end |
private :a |
end |
Mod.private_instance_methods |
» |
["c", "a"] |
|
protected
|
protected( [einSymbol]* )
-> mod |
|
Wenn keine Argumente übergeben werden, ist die Sichtbarkeit aller nachfolgend definierten
Methoden geschützt.
Werden Argumente übergeben, so werden alle genannten Methoden zu geschützten Methoden gewandelt.
Vgl. auch Zugriffskontrolle im Abschnitt "Die Sprache Ruby".
|
public
|
public( [einSymbol]* )
-> mod |
|
Wenn keine Argumente übergeben werden, ist die Sichtbarkeit aller nachfolgend definierten
Methoden öffentlich.
Werden Argumente übergeben, so werden alle genannten Methoden zu öffentlichen Methoden gewandelt.
Vgl. auch Zugriffskontrolle im Abschnitt "Die Sprache Ruby".
|
remove_const
|
remove_const( einSymbol )
-> einObjekt |
|
Löscht die Definition einer Konstante und gibt deren Wert zurück. Vordefinierte Klassen
und Singletonobjekte (wie z.B. true) können nicht entfernt werden.
|
remove_method
|
remove_method( einSymbol )
-> mod |
|
Entfernt die durch einSymbol identifizierte Methode von der aktuellen Klasse.
Für ein Beispiel, siehe Module.undef_method .
|
undef_method
|
undef_method( einSymbol )
-> mod |
|
Unterbindet die Beantwortung von Aufrufen der genannten Methode in der aktuellen Klasse.
Vergleiche dies mit remove_method , das eine Methode aus der jeweiligen Klasse
entfernt; Ruby würde in diesem Fall immer noch die Oberklassen und eingebundenen Module nach
einem möglichen Empfänger durchsuchen.
class Parent
def hello
print "In parent\n"
end
end
class Child < Parent
def hello
print "In child\n"
end
end
c = Child.new
c.hello
class Child
remove_method :hello # remove from child, still in parent
end
c.hello
class Child
undef_method :hello # prevent any calls to 'hello'
end
c.hello
|
produces:
In child
In parent
prog.rb:23: undefined method `hello' for #<Child:0x4018d428> (NameError)
|
|