Fandom

Mini-Wikia

Ruby 4 Everyone/Klasse: Object

< Ruby 4 Everyone

1.771Seiten in
diesem Wiki
Seite hinzufügen
Diskussion0 Teilen

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.

Object ist die Mutterklasse aller anderen Klassen. Also kann man die hier aufgelisteten Methoden für jedes Objekt aufrufen, vorausgesetzt sie wurde nicht ausdrücklich überlagert.

Klassenmethoden

new Object.new -> einObjekt
Erstellt eine neue Instanz von Object.

Instanzmethoden

== === =~ __id__ __send__ class clone dclone display dup enum_for eql? equal? extend freeze frozen? hash id inspect instance_eval instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? kind_of? method methods nil? object_id private_methods protected_methods public_methods remove_instance_variable respond_to?

== obj == einObjekt-> true oder false
Erstellt eine neue Instanzmethode.
=== obj === einObjekt-> true oder false
case-Gleichheit: In der Klasse Object ist es eigentlich das selbe wie ==. Diese Methode wird normalerweise von case aufgerufen und von den Tochterklassen modifiziert, um für die jeweilige Klasse zu funktionieren.
=~ obj =~ einObjekt-> true oder false
Mustervergleich: Wird von den Tochterklassen verändert (vorallem von String und Regexp) um sinnvolle Vergleiche zu erreichen.
__id__ obj.__id__-> Fixnum
Gibt die Identifikation von obj zurück. Jeder Aufruf dieser Methode gibt bei dem selben Objekt die selbe Nummer zurück und keine zwei Objekte werden die gleichen ID liefern.

Das Konzept von Object#id weicht von der :name-Notation, die die Symbol-ID von name zurück gibt, ab.

__send__ obj.__send__( einSymbol[, args...] ) -> einObjekt
Ruft die Methode, die in einSymbol angegeben ist, auf und überreiche eventuelle Argumente. Man kann auch die send-Methode benutzen, wenn falls diese von einer Klasse überschrieben wurde.
class Class
  def hello(*args)
    "Hallo " + args.join(' ')
  end
end
k = Class.new
k.send :hello, "verehrte", "Leser"   #=> "Hallo verehrte Leser"
class obj.class -> einString (Klassename)
Gibt die Klasse von obj zurück. Diese Methode muss immer eindeutig als die Methode eines Objektes aufgerufen werden, da class auch dafür da ist, eine Klasse zu erstellen.
1.class      #=> Fixnum
self.class   #=> Object
clone obj.clone -> einObjekt
Gibt eine Kopie mit den gleichen Instanzvariablen und dem gleichen freeze und tainted Zustand zurück. Das Objekt ist allerdings nicht das selbe, was man daran sieht, dass die object_id verschieden ist.
class Klass
  attr_accessor :str
end
s1 = Klass.new      #=> #<Klass:0x401b3a38>
s1.str = "Hallo"    #=> "Hello"
s2 = s1.clone       #=> #<Klass:0x401b3998 @str="Hallo">
s2.str[1,4] = "i"   #=> "i"
s1.inspect          #=> "#<Klass:0x401b3a38 @str=\"Hi\">"
s2.inspect          #=> "#<Klass:0x401b3998 @str=\"Hi\">"
dclone obj.clone -> einObjekt
<keine Beschreibung>
display obj.display( port=$> ) -> nil
Gibt obj am angegebenen Port aus (Standardeinstellung für den Port ist $>)
1.display            #=> 1
"cat".display        #=> cat
[ 4, 5, 6 ].display  #=> 456
#=> 1cat456
dup obj.dup -> einObjekt
Ähnlich wie clone, nur das clone angesprochen wird, um ein Objekt mitsamt seinem internen Zustand zu duplizieren, während dup typischerweise die Klasse des abgleiteten Objekts verwendet, um eine neue Instanz zu erstellen.
enum_for obj.enum_for(method = :each, *args) => Enumerable::Enumerator.new(self, method, *args)
<keine Beschreibung>

Orginal aus ri: Returns Enumerable::Enumerator.new(self, method, *args)

str = "xyz"
enum = str.enum_for(:each_byte)
a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"]
# protects an array from being modified
a = [1, 2, 3]
some_method(a.to_enum)
eql? obj.eql?( einObjekt ) -> true oder false
Gibt true zurück, wenn die Objekte den gleichen Wert haben.

In den meisten Tochterklassen ist == mit eql? gleichgesetzt.

Vergleich mit equal? und ==:

h1 = [1, 2, 3] 
h2 = [1, 2, 3]
h1.equal? h2   #=> false
h1.eql? h2     #=> true
equal? obj.equal?( einObjekt ) -> true oder false
Alias für ==, allerdings wird == häufig von Tochterklassen überschrieben, während diese Methode bleiben sollte.
extend obj.extend( einModul, ... ) -> obj
Erweitert die obj Klasse um die Instanzmethoden von einModul
module Mod
  def hello
    "Hier spricht Mod.\n"
  end
end

class Klass
  def hello
    "Hier spricht Klass.\n"
  end
end

k = Klass.new
k.hello         #=> Hier spricht Klass.\n"
k.extend(Mod)   #=> #<Klass:0x401b3bc8>
k.hello         #=> "Hier spricht Mod.\n"
freeze obj.freeze -> obj
Verhindert weitere Veränderungen an obj. Bei einer versuchten Veränderung wird ein TypeError geworfen.

Ein eingefrorenes Objekt kann nicht mehr "aufgetaut" werden.

a = ["a", "b", "c"]
a.freeze
a << "z"

Gibt folgendes zurück:

prog.rb:3:in `<<': can't modify frozen array (TypeError) from prog.rb:3
frozen? obj.frozen? -> true oder false
Gibt true zurück, wenn obj mittels freeze oder auf anderem Weg "eingefroren" wurde.
a = [ "a", "b", "c" ]
a.frozen?   #=> false
a.freeze    #=> ["a", "b", "c"]
a.frozen?   #=> true
hash obj.hash -> eineFixnum
Gibt ein Fixnum-Hash zurück, der auf Basis von obj erstellt wurde.

Zwei Objekte mit dem gleichen Wert ergeben den gleichen Hash. Jeder Hash-Wert, der den Zahlenraum einer Fixnum übersteigt, wird abgeschnitten.

3.hash        #=> 7
"3".hash      #=> 52
[3].hash      #=> 5
{3 => 3}.hash #=> 21410550
id [Abgelehnt] obj.id => eineFixnum
Alias für __id__
inspect obj.inspect => string
Gibt eine für Menschen lesbare Form von obj zurück. Der String werden, wenn nicht überschrieben, mit to_s generiert.
[ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
Time.new.inspect                 #=> "Wed Apr 09 08:54:39 CDT 2003"
instance_eval obj.instance_eval(einString[, datei[, zeile]] ) -> einObjekt

obj.instance_eval {| | block }-> einObjekt

Evaluiert einString, bzw. den angegebenen Codeblock im Kontext des Empfängers (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?(class) => true oder false
Gibt true zurück, wenn obj eine Instanz class ist.
instance_variable_defined? obj.instance_variable_defined?(symbol/string) => true or false
Gibt true zurück, wenn die in symbol angegebene Instanzvariable in obj definiert wurde.
class Fred
  def initialize(p1, p2)
    @a, @b = p1, p2
  end
end
fred = Fred.new('cat', 99)
fred.instance_variable_defined?(:@a)    #=> true
fred.instance_variable_defined?("@b")   #=> true
fred.instance_variable_defined?("@c")   #=> false
instance_variable_get obj.instance_variable_get(symbol/string) => einObjekt
Gibt die in symbol angegebene Instanzvariable in obj oder, falls diese nicht gesetzt wurde, nil zurück.

Falls das übergebene symbol kein Variablenname sein kann, wird ein NameError geworfen.

class Fred
  def initialize(p1, p2)
    @a, @b = p1, p2
  end
end
fred = Fred.new('Katze', 99)
fred.instance_variable_get(:@a)    #=> "Katze"
fred.instance_variable_get("@b")   #=> 99
instance_variable_set obj.instance_variable_set(symbol/string) => einObjekt
Setzt die in symbol angegebene Instanzvariable in obj.

Falls das übergebene symbol kein Variablenname sein kann, wird ein NameError geworfen.

class Fred
  def initialize(p1, p2)
    @a, @b = p1, p2
  end
end
fred = Fred.new('Katze', 99)
fred.instance_variable_set(:@a, 'Hund')   #=> "Hund"
fred.instance_variable_set(:@c, 'Katze')  #=> "Katze"
fred.inspect                              #=> "#<Fred:0x401b3da8 @a=\"Hund",
                                               @b=99, @c=\"Katze\">"
instance_variables obj.instance_variables => einArray
Gibt die Instanzvariablen von obj zurück.

Notiz: Einen accessor zu definieren, erstellt keine Instanzvariable.

class Fred
  attr_accessor :a1
  def initialize
    @iv = 3
  end
end
Fred.new.instance_variables   #=> ["@iv"]
is_a? obj.is_a?(class) => true oder false
Gibt true zurück, wenn obj eine Instanz class, bzw. einer Mutterklasse oder eines eingebundenen Moduls ist, im Gegensatz zu instance_of? welches nur direkt die Klasse überprüft.
module M;    end
class A
  include M
end
class B < A; end
class C < B; end
b = B.new
b.instance_of? A   #=> false
b.instance_of? B   #=> true
b.instance_of? C   #=> false
b.instance_of? M   #=> false
b.is_a? A          #=> true
b.is_a? B          #=> true
b.is_a? C          #=> false
b.is_a? M          #=> true
kind_of? obj.kind_of?(class) => true oder false
Alias für is_a?
method obj.method(symbol) => eineMethode
Sucht in obj nach der Methode in symbol und gibt diese als Method-Objekt zurück (bzw. wirft einen NameError)
class Demo
  def initialize(n)
    @iv = n
  end
  def hello()
    "Hello, @iv = #{@iv}"
  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"
methods obj.methods => array
Gibt die öffentlichen Methoden von obj als Array zurück.
nil.methods.sort #=> ["&", "==", ...]
nil? obj.nil? => true oder false
Gibt true zurück, falls das obj nil ist.
object_id obj.object_id => -> eineFixnum
Alias für __id__
private_methods obj.private_methods(all=true) => array
Gibt eine Liste der zugänglichen privaten Methoden von obj als Array zurück.

Wenn der all-Parameter auf false gesetzt ist, werden nur die Methoden von obj aufgelistet.

protected_methods obj.protected_methods(all=true) => array
Gibt eine Liste der zugänglichen geschützten Methoden von obj als Array zurück.

Wenn der all-Parameter auf false gesetzt ist, werden nur die Methoden von obj aufgelistet.

public_methods obj.public_methods(all=true) => array
Beinahe-Alias für methods.

Wenn der all-Parameter auf false gesetzt ist, werden nur die Methoden von obj aufgelistet.

remove_instance_variable obj.remove_instance_variable(einSymbol) => einObjekt
Entfernt die übergebene Instanzvariable und gibt diese zurück.
class Dummy
  attr_reader :var
  def initialize
    @var = 99
  end
end
d = Dummy.new
d.var                               #=> 99
d.remove_instance_variable(:@var)   #=> 99
respond_to? obj.respond_to?(symbol, include_private=false) => true or false
Gibt true zurück, falls obj die übergebene Methode kennt.

Falls der zweite Parameter true ist, werden private Methoden in die Suche einbezogen.

Tochterklassen

Auch bei Fandom

Zufälliges Wiki