November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Dla danego hasza chcemy stworzyć jego „lustrzany” odpowiednik — czyli taki, w którym klucze i wartości zamienione będą rolami. Jeżeli na przykład w oryginalnym haszu istnieje pozycja "gajowy" => "wilk", to jej odpowiednikiem w haszu docelowym ma być pozycja "wilk" => "gajowy".
Operację tę najprościej jest wykonać za pomocą metody Hash#invert:
phone_directory = { 'Alice' => '555-1212',
'Bob' => '555-1313',
'Mallory' => '111-1111' }
phone_directory.invert
# => {"111-1111"=>"Mallory", "555-1212"=>"Alice", "555-1313"=>"Bob"}
Metoda Hash#invert nie spełni jednak zadowalająco opisanego zadania, jeśli odwzorowanie kluczy w wartości nie będzie odwzorowaniem różnowartościowym, ...