On 10.02.2013 01:48, Simon Krahnke wrote:
> * Robert Klemme <
short...@googlemail.com> (2013-02-03) schrieb:
>
>> On 03.02.2013 10:20, Christian Anders wrote:
>>> Christian Anders <
christi...@gmx.net> wrote:
>>>> Ich muss eine Adressenliste gruppieren und sortieren. Die Gruppierung
>>>> ist gelungen:
>>> nun auch die Sortierung. Die Adressenliste muss in ganz
>>> unterschiedlichen Formaten und zu unterschiedlichen Zwecken ausgegeben
>>> werden. Da wäre es toll, wenn beispielsweise die Gruppierung und
>>> Sortierung in eine Methode gepackt wäre. Ich fürchte, dass es sonst
>>> unübersichtlich wird. Das steht noch aus. Vllt kann mir ja jemand den
>>> Weg weisen.
>>
>> Wenn es nur um Ausgabe geht, kannst Du auch einfach zweistufig sortieren.
>>
>> last = nil
>>
>> adressen.sort_by {|x| [x['gruppe'], x['name']}.each do |x|
>> g = x['gruppe']
>>
>> if g != last
>> puts "# #{g}"
>> last = g
>> end
>>
>> puts x['name']
>> end
>>
>> Ich würde übrigens eher eine Struct anstatt von Hashes verwenden
>>
>> Schueler = Struct.new :name, :gruppe
>
> Und das funktioniert mit YAML?
irb(main):001:0> Schueler = Struct.new :name, :gruppe
=> Schueler
irb(main):002:0> didi = Schueler.new "Didi", "Sportler"
=> #<struct Schueler name="Didi", gruppe="Sportler">
irb(main):003:0> YAML.dump(didi)
=> "--- !ruby/struct:Schueler\nname: Didi\ngruppe: Sportler\n"
irb(main):004:0> copy = YAML.load(YAML.dump(didi))
=> #<struct Schueler name="Didi", gruppe="Sportler">