Moduł Perl6::Parameters

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Obsługa modułu Perl6::Parameters

use Perl6::Parameters; sub mysub($foo, ARRAY $bar, *%rest) { ... }

Co to jest?

Moduł implementuje prototypowy styl Perla 6 z nazwanymi parametrami funkcji.
Jeżeli denerwuje Cię zdejmowanie ze stosu argumentów funkcji to coś dla Ciebie!

Szczegóły

Perl6::Parameters to moduł, który symuluje nazwane parametry szóstej wersji Perla. Kiedy mówie o "nazwanych parametrach" chodzi mi o te znane z C, Javy i innych języków, które nie przekazują parametrów w haszu.
Jak wiele innych języków programowania, Perl 6 będzie obsługiwał funkcje z pre-deklarowanymi zmiennymi. Na szczęscie używanie takiego stylu będzie opcjonalne. Kod my($first, $second)=(@_) będzie można zastąpić takim sub mysub($first, $second). Ten moduł wprowadza taką funkcjonalność do Perla 5. Używa także innych własności charakterystycznych dla Perla 6 np.: nazw wbudowanych Perla 6 i gwiazdki do spłaszczania listy.

Tworzenie listy parametrów

Tworzenie list parametrów jest proste. Deklarujemy funkcje i wstawiamy parametry w nawiasy oddzielone przecinkami lub średnikami. Użycie średnika implikuje opcjonalność reszty parametrów.
Większość parametrów to zmienne skalarne jak $foo, jednak bardziej wyszukane zachowanie też jest możliwe. Są trzy sposoby by to osiągnąć.
Pierwszy sposób to zdefiniowanie typu zmiennej. Niektóre typy zamieniają prawdziwe parametry w referencje do siebie:

ARRAY $foo
Zamienia tablice na referencje do siebie samej i zapisuje tą referencje do zmiennej $foo.
HASH $foo
Zamienia hasza na referencje do siebie samego i zapisuje tą referencje do zmiennej $foo.
CODE $foo
Zamienia funkcję na referencje do siebie samej i zapisuje tą referencje do zmiennej $foo.
SCALAR $foo
Zamienia skalar na referencje do siebie samego i zapisuje tą referencje do zmiennej $foo.
GLOB $foo
Zamienia typegloba na referencje do siebie samej i zapisuje tą referencje do zmiennej $foo. Typegloby mają zniknąć z Perla 6 jednak ten typ istnieje w module, ponieważ jest generalnie przydatny w Perlu 5.
REF $foo
Zamienia jakikolwiek parametr na referencje do siebie samego i zapisuje tą referencje do zmiennej $foo
AnythingElse $foo
Taki zapis nie ma żadnego efektu. Jest traktowany jakbyś napisał samo $foo bez AnythingElse.

Przykład

Jeżeli funkcja ma tak zdefiniowaną listę parametrów: ($foo, HASH $bar, CODE $baz) i jest wywołana z ($scalar, %hash, &mysub) to funkcja otrzyma zawartość zmiennej $scalar, referencje do %hash i referencje &mysub.
Drugi sposób to dostarczenie nazwy istniejącej tablicy bądź hasza jako nazwa parametru. Następnie należy dla tego parametru podać tablicę lub hasz. Zachowuje to wielkość tablicy bądź hasza.
Trzeci sposób jest tylko dostępny dla ostatniego parametru: jeżeli tablica lub hasz jest poprzedzona gwiazdką to ta tablica lub hasz będzie zawierała wszystkie dodatkowe parametry.

Zastrzeżenia

Błędy

Na razie nie stwierdzono, ale jeżeli jakiś znajdziesz to wyślij go na <bug-Perl6-Parameters@rt.cpan.org> i CC <brentdax@cpan.org>.

Dodatkowe informacje

Cała dokumentacja znajduje się na http://search.cpan.org/~brentdax/Perl6-Parameters-0.03/Parameters.pm

Autor opracowania

P.B.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.