Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Symbol-Literale im Hash sortierbar?
BeitragVerfasst: 16 Nov 2012, 09:55 
Offline
Nuby

Registriert: 18 Jul 2012, 10:15
Beiträge: 2
Hallo,

ich habe in einer Firma neu angefangen zu arbeiten. Eine der Programmiersprachen mit denen ich mich beschäftigen werde ist Ruby. Es wurde eine sehr umfangreiche Software erstellt. welche ich warten werde. Im Programmablauf sind nun Fehler aufgetreten, deren Ursache darin begrundet liegt, dass in einem Hash (mit Symbol-Literalen) die Reihenfolge der Keys nicht richtig ist und damit meine Testprocedures falsch geschrieben werden, in etwa so:

...[:wert2,:wert4,:wert3,:wert1]

Gibt es eine Möglichkeit ohne großen Aufwand eine Sortierung hinzubekommen?, geht das überhaupt mit Literealen?

Gruß und Danke
burgi


Nach oben
 Profil  
 
BeitragVerfasst: 16 Nov 2012, 21:16 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Willkommen im Forum :)

burgi24 hat geschrieben:
. Im Programmablauf sind nun Fehler aufgetreten, deren Ursache darin begrundet liegt, dass in einem Hash (mit Symbol-Literalen) die Reihenfolge der Keys nicht richtig ist und damit meine Testprocedures falsch geschrieben werden,
Ganz generell wird es als schlechter Stil angesehen, sich auf die Reihenfolge von Hash-Keys zu verlassen (und ich unterstütze diese Ansicht). Ein Hash ist ein Schlüssel-Wert-Verzeichnis, und keine Liste von Elementen (dafür gibt es Arrays).

burgi24 hat geschrieben:
.[:wert2,:wert4,:wert3,:wert1]
Das ist ein Array, kein Hash. Bei einem Array kann man sich selbstverständlich auf die Reihenfolge verlassen, und es zu sortieren ist auch nicht weiter schwer:

1
2
3
4
5
# ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]
irb(main):001:0> ary = [:wert2,:wert4,:wert3,:wert1]
=> [:wert2, :wert4, :wert3, :wert1]
irb(main):002:0> ary.sort
=> [:wert1, :wert2, :wert3, :wert4]


burgi24 hat geschrieben:
geht das überhaupt mit Literealen?
Sortierung hat mit Literalen nichts zu tun; welchen Sinn würde es etwa machen, /a?bc/ sortieren zu wollen? Literale sind ein Syntaxkonstrukt der Sprache, Sortierung bezieht sich aber ausschließlich auf Inhalte, sprich Objekte. Zwei grundverschiedene Dinge. Siehe unser Wiki für eine ausführliche Beschreibung der Literale in Ruby.

Zur ursprünglichen Fragestellung: Sich auf die Sortierung von Hashes zu verlassen, ist wie gesagt schlechter Stil. Es geht aber: Ab Ruby 1.9 arbeiten Hashes standardmäßig sortiert und hin und wieder kann das ganz praktisch sein. Für 1.8 gibt es nur Behelfslösungen (google mal "ruby 1.8 sorted hashes" oder so).

Im Übrigen möchte ich ausdrücklich darauf hinweisen, dass Ruby 1.8 unmittelbar vor dem Aus steht. Hier das offizielle Statement der Ruby-Entwickler: http://www.ruby-lang.org/de/news/2011/10/11/plne-fr-1-8-7/

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: