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 the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.