Thread smartmatch (11 answers)
Opened by torsten at 2011-05-16 13:44

torsten
 2011-05-16 15:03
#148686 #148686
User since
2010-08-16
45 Artikel
BenutzerIn
[Homepage] [default_avatar]
2011-05-16T11:44:42 torsten
Code: (dl )
@{[values %old]}~~@{[values %new]}


Das funktionierte bei meinen Tests immer. Aber es geht davon aus, dass values die Werte für beide Hashes in der selben Reihenfolge liefert.


Ich denke, folgendes ist richtig:

Code: (dl )
%old~~%new and @{[values %old]}~~@{[@new{keys %old}]}


Der Teil vor dem and prüft, ob die Keys in den beiden Arrays übereinstimmen. Der zweite Teil prüft die Werte.

Und ja, das Konstrukt @{[@new{keys %old}]} muss so lauten. Ein Slice is offensichtlich etwas anderes als ein Array. Bei folgendem Code kommt nämlich falsch raus:

Code: (dl )
%old~~%new and @{[values %old]}~~@new{keys %old}

View full thread smartmatch