class methods
|
new
|
Struct.new( [einString][, einSymbol]+ )
-> CustomerClass |
|
Erstellt eine neue Klasse, die einString heisst und Zugriffsmethoden für die
angegebenen Symbole enthält.
Wenn des Name einString weggelassen wird, wird eine anonyme Klasse erstellt. Sonst
erscheint der Name als Klassenkonstante in Struct , so dass er für alle
Struct s im System gleich ist. Der Name sollte mit einem Großbuchstaben
beginnen.
Struct.new gibt ein
neues Class -Objekt zurück, das dann verwendet werden kann, um spezifische
Instanzen der neuen Struktur zu generieren.
Die übrigen, unten aufgeführten Klassen- und Instanzmethoden werden für die generierte Klasse
definiert. Siehe die nachfolgende Beschreibung für ein Beispiel.
The remaining methods listed below (class and instance) are
defined for this generated class. See the description that follows
for an example.
|
new
|
CustomerClass.new( [einObjekt]+ )
-> CustomerInst |
|
Erstellt eine neue Instanz. Die Anzahl der Parameter muss kleiner oder gleich der Anzahl der
Attribute dieser Klasse sein; nicht vorgegebene Parameter enthalten standard-mäßig nil .
Werden zu viele Argument übergeben, so wird ein ArgumentError geworfen.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
joe.name |
» |
"Joe Smith" |
joe.zip |
» |
12345 |
|
members
|
CustomerClass.members
-> einArray |
|
Gibt ein Array von Strings mit den Namen der Instanzvariablen zurück.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
Customer.members |
» |
["name", "address", "zip"] |
|
instance methods
|
==
|
CustomerInst == eineAndereStruct-> true oder false |
|
Gleichheit---Gibt true zurück, wenn eineAndereStruct diesem
Struct gleicht: Sie müssen dieselbe von
Struct.new generierte
Klasse haben und die Werte aller Instanzvariablen müssen unter
Object#== )
gleich sein.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
joejr = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
jane = Customer.new( "Jane Doe", "456 Elm, Anytown NC", 12345 ) |
joe == joejr |
» |
true |
joe == jane |
» |
false |
|
[ ]
|
CustomerInst[ einSymbol ] -> einObjekt CustomerInst[ einInteger ] -> einObjekt
|
|
Attributreferenz---Gibt den Wert der Instanzvariablen, die durch einSymbol benannt
bzw. durch einInteger indiziert (0..laenge-1) wird, zurück. Die Methode wirft einen
NameError wenn die benannte Variable nicht existiert bzw. einen
IndexError wenn der Index ausserhalb der zulässigen Grenzen liegt.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
|
joe["name"] |
» |
"Joe Smith" |
joe[:name] |
» |
"Joe Smith" |
joe[0] |
» |
"Joe Smith" |
|
[ ]=
|
CustomerInst[ einSymbol ] = einObjekt-> einObjekt CustomerInst[ einInteger ] = einObjekt-> einObjekt
|
|
Attributzuweisung---Weist der Instanzvariablen, die durch einSymbol benannt bzw.
durch einInteger indiziert wird den Wert einObjekt zu und gibt diesen
zurück. Die Methode wirft einen NameError wenn die benannte Variable
nicht existiert bzw. einen IndexError wenn der Index ausserhalb der
definierten Grenzen liegt.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
|
joe["name"] = "Luke" |
joe[:zip] = "90210" |
|
joe.name |
» |
"Luke" |
joe.zip |
» |
"90210" |
|
each
|
CustomerInst.each {| einObjekt | block }-> CustomerInst |
|
Ruft block je Instanzvariable einmal auf und übergibt deren Wert an den Codeblock.
Customer = Struct.new( "Customer", :name, :address, :zip )
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 )
joe.each {|x| puts(x) }
|
produces:
Joe Smith
123 Maple, Anytown NC
12345
|
|
length
|
CustomerInst.length
-> einInteger |
|
Gibt die Anzalh der Instanzvariablen zurück.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
joe.length |
» |
3 |
|
members
|
CustomerInst.members
-> einArray |
|
Gibt ein Array von Strings mit den Namen der Instanzvariablen zurück.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
joe.members |
» |
["name", "address", "zip"] |
|
size
|
CustomerInst.size
-> einInteger |
|
Synonym für Struct#length .
|
to_a
|
CustomerInst.to_a
-> einArray |
|
Gibt die Werte dieser Instanz als Array zurück.
Customer = Struct.new( "Customer", :name, :address, :zip ) |
joe = Customer.new( "Joe Smith", "123 Maple, Anytown NC", 12345 ) |
joe.to_a[1] |
» |
"123 Maple, Anytown NC" |
|
values
|
CustomerInst.values
-> einArray |
|
Synonym für to_a .
|