Asocjacje jako obiekty
Jedno z najciekawszych zastosowań procedury AUTOLOAD
można znaleźć w module Hash::AsObject
napisanym przez Paula Hoffmana. W swojej procedurze AUTOLOAD
dokonuje on kilku magicznych sztuczek, aby można było uzyskać dostęp do wartości asocjacji za pomocą kluczy, jak zwykle się to robi, albo jak do obiektu z metodami o nazwach takich jak nazwy kluczy:
use Hash::AsObject; my $hash = Hash::AsObject->new; $hash->{foo} = 42; # zwykły dostęp do asocjacji print $hash->foo, "\n"; # dostęp jak do obiektu $hash->bar( 137 ), # ustawienie wartości
Moduł radzi sobie nawet z asocjacjami wielopoziomowymi:
$hash->{baz}{quux} = 149; $hash->baz->quux;
Trik polega na tym, że $hash
jest zwykłą referencją do asocjacji, która zostaje przekształcona ...
Get Perl. Mistrzostwo w programowaniu now with O’Reilly online learning.
O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.