Aion
view release on metacpan or search on metacpan
lib/Aion/Types.md view on Meta::CPAN
```perl
use Aion::Types;
BEGIN {
subtype SpeakOfKitty => as StrMatch[qr/\bkitty\b/i],
message { "Speak is'nt included kitty!" };
}
"Kitty!" ~~ SpeakOfKitty # -> 1
"abc" ~~ SpeakOfKitty # -> ""
SpeakOfKitty->validate("abc", "This") # @-> Speak is'nt included kitty!
BEGIN {
subtype IntOrArrayRef => as (Int | ArrayRef);
}
[] ~~ IntOrArrayRef # -> 1
35 ~~ IntOrArrayRef # -> 1
"" ~~ IntOrArrayRef # -> ""
coerce IntOrArrayRef, from Num, via { int($_ + .5) };
IntOrArrayRef->coerce(5.5) # => 6
```
# DESCRIPTION
ÐÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ ÑкÑпоÑÑиÑÑÐµÑ Ð¿Ð¾Ð´Ð¿ÑогÑаммÑ:
* `subtype`, `as`, `init_where`, `where`, `awhere`, `message` â Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑоÑов.
* `SELF`, `ARGS`, `A`, `B`, `C`, `D`, `M`, `N` â Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² валидаÑоÑаÑ
Ñипа и его аÑгÑменÑов.
* `coerce`, `from`, `via` â Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÑÑоÑа знаÑений из одного клаÑÑа в дÑÑгой.
ÐеÑаÑÑ
Ð¸Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑоÑов:
```text
Any
Control
Union[A, B...]
Intersection[A, B...]
Exclude[A...]
Option[A]
Wantarray[A, B]
Item
External[type]
Bool
BoolLike
Enum[e...]
Maybe[A]
Undef
Defined
Value
Version
Str
Uni
Bin
NonEmptyStr
StartsWith[start]
EndsWith[end]
Email
Tel
Url
Path
Html
StrDate
StrDateTime
StrMatch[regexp]
ClassName
RoleName
Join[separator]
Split[separator]
StrRat
Num
PositiveNum
Int
PositiveInt
Nat
Ref
Tied`[class]
LValueRef
FormatRef
CodeRef
NamedCode[subname]
ProtoCode[prototype]
ForwardRef
ImplementRef
Isa[A...]
RegexpRef
ValueRef`[A]
ScalarRef`[A]
RefRef`[A]
GlobRef
FileHandle
ArrayRef`[A]
HashRef`[A]
Object`[class]
Me
Rat
Map[A => B]
Tuple[A...]
CycleTuple[A...]
Dict[k => A, ...]
RegexpLike
CodeLike
ArrayLike`[A]
Lim[from, to?]
HashLike`[A]
HasProp[p...]
LimKeys[from, to?]
Like
HasMethods[m...]
Overload`[m...]
InstanceOf[class...]
ConsumerOf[role...]
StrLike
Len[from, to?]
NumLike
Float
( run in 0.629 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )