homeUnix & Internet Unix & Shell-Programmierung: Assoziative Felder Prof. Dr. Uwe Schmidt FH Wedel

Assoziative Felder

weiter

weiter

Der Datentyp Hash

Hash
ist die eingebaute Ruby Klasse für assoziative Felder.
 
Literale
für assoziative Felder
 
{}
{:href => "abc"}
{2 => 25, 3 => 38}
{:href => "abc", 1 =>2}
weiter
Erzeugung
von assoziativen Felder
 
Hash.new
Hash.new("default")
 
e = {}
e.class                 # => Hash
 
e = Hash.new
e.class                 # => Hash
 
h = { :href => "abc"
    , :src  => "xyz"
    }
h.class                 # => Hash
Lesender Zugriff
auf Elemente eines assoziativen Feldes
 
h = {:href => "abc":src => "xyz"}
 
h[:href]                # => "abc"
h[:xyz]                 # => nil
h[1]                    # => nil
 
h = Hash.new("")
h[:href]                # => ""
Schreibender Zugriff
 
h = {}
h[:href] = "abc"h     # => {:href=>"abc"}
h[:href] = "xyz"h     # => {:href=>"xyz"}
h[nil]=nil      ; h     # => {nil=>nil,
                        #     :href=>"xyz"}
weiter
Weitere Operationen
auf assoziativen Feldern
 
h = {:href => "abc":src => "xyz"}
 
h.length                # => 2
h.size                  # => 2
h.empty?                # => false
 
h.key? :href            # => true
h.key? :xyz             # => false
 
h.value? "abc"          # => true
h.value? "123"          # => false
 
h.keys                  # => [:href, :src]
h.values                # => ["abc", "xyz"]
 
h[:alt]="xyz"
h.keys                  # => [:href, :alt, :src]
h.values                # => ["abc", "xyz", "xyz"]
 
h.to_a                  # => [[:href, "abc"],
                        #     [:alt, "xyz"],
                        #     [:src, "xyz"]]
 
h = {:href => "abc":src => "xyz"}
 
h.delete(:src)          # => "xyz"
h                       # => {:href=>"abc"}
 
h.delete(:src)          # => nil
h                       # => {:href=>"abc"}
 
h1 = {:href => "abc":src => "xyz"}
h2 = {:href => "xyz":alt => "neu"}
 
h1.merge h2             # => {:href=>"xyz",
                        #     :alt=>"neu",
                        #     :src=>"xyz"}
h2.merge h1             # => {:href=>"abc",
                        #     :alt=>"neu",
                        #     :src=>"xyz"}
weiter
merke
Es gibt eine Reihe weiterer Funktionen, insbesondere zum Iterieren über Hashes.
Diese arbeiten mit Blöcken.
weiter

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel