Moduł Perl6::Subs

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

Obsługa modułu Perl6::Subs

use Perl6::Subs; sub foo ($x) # Nowy styl parametrów { bar($x) } sub get (Array $x) # Walidacja typów { pop @$x } sub get_or_die ($x of Array where { @$_ }) # Zmiana typów { pop @$x } sub show (Str $s, IO ?$io) # Parametry opcjonalne { print { $io || *STDOUT } $s } sub limit (Int $i, Int +$hi, Int +$low) # Parametry nazwane { ... } method foo # Obiekt: '$self' { $self->bar } method foo (Foo $self: Bar $x) # Parametr 'isa' nazwa klasy { $self->use_bar($x) }

Co to jest?

Ten moduł pozwala definiować procedury używając składni Perla 6

Dla wszystkich nie mogących się doczekać Perla 6!

Szczegóły

Moduł wspiera wszystkie pięć kategorii parametrów procedur Perla 6. Oto one:

Nie można łączyć parametrow opcjonalnych z końcowymi.

Typy i walidacja

Najpierw typy podstawowe w Perlu 6:

str
Jakikolwiek zdefiniowany skalar
num
Liczba, dokładniej zdefiniowany sklara, który przechodzi test Scalar::Util::looks_like_number
int
Liczba całkowita, dokładniej num bez częsci dziesiętnej
ref
Jakakolwiek referencja
bool
Jakikolwiek zdefiniowany skalar

Teraz typy opakowane, obiektowe:

Any
Jakakolwiek wartość, takżeundef
Str
Jakakolwiek wartość skalarna, takżeundef
Num
num albo undef
Int
int albo undef
Ref
Jakakolwiek referencja albo undef
Array
Referencja do tablicy albo undef
Hash
Referencja do hasza albo undef
Code
Referencja do procedury albo undef
Rule
Referencja do wyrażenia regularnego (qr//) albo undef
IO
Wartość, która może być użyta jako I/O: referencja do uchwytu IO (np.: *STDOUT{IO}), glob (np.: *STDOUT), referencja do globa (np.: \*STDOUT) lub undef.

Moduł obsługuje także typy nieobsługiwane w Perlu 6 ale użyteczne w Perlu 5:

Glob
glob (np.: *STDOUT) albo undef
GlobRef
Referencja do globa (np.: \*STDOUT) albo undef

Składnia deklaracji procedur

Moduł filtruje procedury zadeklarowane poprzez styl Perla 6 lub poprzez słówko kluczowe method: sub foo is method {...} sub foo returns(Any) is method {...} sub foo ($self:) : method {...} method foo {...} method foo ($self:) {...} Parametry możemy deklarować na dwa sposoby: Type $var lub $var of Type. Obie składnie są równoznaczne.

Dodatkowe informacje

Cała dokumentacja znajduje się na http://search.cpan.org/~chips/Perl6-Subs-0.05/lib/Perl6/Subs.pm

Autor opracowania

P.B.

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