Hash & Array?

  • Hiho meine parallelgruppe im DV kurs arbeitet mit Perl und die arbeiten mit Hash
    So nun wollt ich mal wissen was denn der vorteil eines Hashs gegenüber einem array ist und ob es sowas auch in autoit gibt... hab zwar nix gefunden aber könnte ja trotzdem sein
    Ich hab in sonem Ruby forum folgende definition gefunden, sehe darin aber keinen sinn da man keine reihenfolge hat...

    Zitat

    Ein Hash ist eine Sammlung von Schlüssel-Wert-Paaren. Es ist Ähnlich einem Array mit der Ausnahme, dass die Indizierung mit beliebigen Schlüsseln jedes Objekttyps, nicht nur Ganzzahlen, erfolgt. Die Reihenfolge, in der ein Hash nach Schlüssel oder nach Wert durchlaufen wird ist beliebig und wird in der Regel nicht die Einfüge-Reihenfolge. Hashes haben einen Standardwert, der zurückgegeben wird, wenn auf Schlüssel zugegriffen wird, die nicht im Hash existieren. Dieser Wert ist standardmässig nil.

    Wär schön wenn mir das jemand erklären könnte für was man sowas braucht ^^ oder eben was für einen Vorteil es gegenüber einem Array hat

    THX & MFGEEEHE

    Edit Mega: Die Sprache heißt Perl das Versandhaus Pearl :P

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    4 Mal editiert, zuletzt von FireFlyer (28. Februar 2008 um 18:38)

  • Moin FireFlyer,

    der Vorteil ist deine Array-Inhalte 'Namen' haben.
    Die Zuordnung passiert über 'Name = Wert' und so kannst du einem Wert über den Namen (und nicht über eine Nummer) abfragen.
    Ist wenn du so willst ein benamtes eindimensionales Array.
    BugFix hat eine UDF für eine HashTable entwickelt, einfach mal suchen ;)

    Edit : Hier ist die UDF von BugFix
    UDF-Sammlung Array Alternativen

    Einmal editiert, zuletzt von JanSchmidt (28. Februar 2008 um 15:26)

    • Offizieller Beitrag

    HI,

    ganz einfach. Ein Array wird immer über den Index angesprochen. Stell dir vor du hast ein Bücherregal. Dann sagst du beim Array gib mir das 3.te Buch. mit $array[3] (Arrays fangen bei 0 an zu zählen!)
    Bsp:
    0 = Harry Potter 1
    1 = Harry Potter 2
    2 = Harry Potter 3
    3 = Harry Potter 4

    Beim Hash speicherst du analog zu ini in Autoit einen Key ab mit dem du den Wert ansprechen kannst.

    Bsp.
    HP1 = Harry Potter 1
    HP2 = Harry Potter 2
    HP3 = Harry Potter 3
    HP4 = Harry Potter 4

    Wenn du jetzt Harry Potter Teil3 haben willst sagst du einfach gibHashFkt(Hp3) Hashes sind dafür optimiert, dass dieser Zugriff sehr schnell geht.

    Reicht das schon?

    Mega

    P.S.: Guck mal bei BugFix der hat das DictionaryObj vorgestellt, dies fungiert wie ein Hash.

  • Hatte da auch mal einen Beitrag geschrieben der eine direkte Hash-Tabelle in AutoIt nutzbar macht: >>Klickmich<<
    Prinzipiell ist die Entscheidung ob man ein Dictionary oder eine Hash-Table nimmt lediglich von der Größe abhängig.
    Bei kleiner Datenmenge, sagen wir mal bis 250 Elemente, ist das Dictionary performanter.
    Bei mehr Elementen ist die Hash-Table im Vorteil.
    Die Nutzung ist bei beiden ähnlich - kommt halt nur darauf an wie viele Elemente du darin unterbringen willst.

    Edit: Oh sorry - hab jetzt erst gesehen das BugFix in seinem Thread schon die Hash-Table mit drin hatte... [Blockierte Grafik: http://i66.photobucket.com/albums/h276/DianneOnly/blush.gif]

  • naja ich brauch das net unbedingt ^^ wollt nur wissen was für vor oder nachteile es gibt
    THX @ ALL war wieder mal ne superschnelle hilfe :D
    @mega sry hab mich verschribselt^^

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D