Aion

 view release on metacpan or  search on metacpan

lib/Aion/Type.md  view on Meta::CPAN

$Int ne $PositiveInt         # -> 1
```

## disjoint ($other)

Тип не пересекается с другим типом.

## subset ($type)

Определяет, что он является подмножеством указанного типа.

## superset ($type)

Определяет, что он является надмножеством указанного типа.

## subproper ($other)

Тип является строгим подмножеством другого.

## superproper ($other)

Тип является строгим надмножеством другого.

## equals ($other)

Тип эквивалентен другому типу.

## differs ($other)

Тип не эквивалентен другому типу.

## disjoint ($other)

Тип не имеет пересечений с другим типом.

## intersects ($other)

Тип имеет пересечение или пересечения с другим типом.

## make ($pkg)

Создаёт подпрограмму без аргументов, которая возвращает тип.

```perl
BEGIN {
	Aion::Type->new(name=>"Rim", test => sub { /^[IVXLCDM]+$/i })->make(__PACKAGE__);
}

"IX" ~~ Rim	 # => 1
```

Если указан `init` то при каждом использовании подпрограммы будет создаваться тип и инициализироваться.

```perl
eval { Aion::Type->new(name=>"Rim", init => sub {...})->make(__PACKAGE__) }; $@ # ~> init_where won't work in Rim
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make }; $@ # ~> syntax error
```

## make_arg ($pkg)

Создает подпрограмму с аргументами, которая возвращает тип.

```perl
BEGIN {
	Aion::Type->new(name=>"Len", test => sub {
		$Aion::Type::SELF->{args}[0] <= length($_) && length($_) <= $Aion::Type::SELF->{args}[1]
	})->make_arg(__PACKAGE__, 1);
}

"IX" ~~ Len[2,2] # => 1
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make_arg }; $@ # ~> syntax error
```

## make_maybe_arg ($pkg)

Создает подпрограмму с аргументами или без.

```perl
BEGIN {
	Aion::Type->new(
		name => "Enum123",
		test => sub { $_ ~~ [1,2,3] },
		a_test => sub { $_ ~~ $Aion::Type::SELF->{args} },
	)->make_maybe_arg(__PACKAGE__);
}

3 ~~ Enum123        # -> 1
3 ~~ Enum123[4,5,6] # -> ""
5 ~~ Enum123[4,5,6] # -> 1
```

Если подпрограмма не может быть создана, то выбрасывается исключение.

```perl
eval { Aion::Type->new(name=>"Rim")->make_maybe_arg }; $@ # ~> syntax error
```

## args ()

Список аргументов.

## name ()

Имя типа.

## as ()

Родительский тип.

## message (;&message)

Акцессор сообщения. Использует `&message` для генерации сообщения об ошибке.

## title (;$title)

Акцессор заголовка (используется для создания схемы **swagger**).

## description (;$description)

Акцессор описания (используется для создания схемы **swagger**).

## example (;$example)

Акцессор примера (используется для создания схемы **swagger**).

## true ()

Всегда возвращает `1`. Нужна для указания теста для типа без `where`.

## clone ()

Клонировать тип.

```perl
my $type = Aion::Type->new(name => 'New');
my $type10 = $type->clone(args => [10]);
$type->stringify # => New
$type10->stringify # => New[10]
```

## is_primitive ()

Это - примитивный тип, то есть тот, в иерархии которого нет множественно-теоритических операторов.

```perl
Aion::Types::Int->is_primitive  # -> 1
Aion::Types::Like->is_primitive # -> ""
```

## is_union ()

Это объединение типов.

```perl
Aion::Types::Int->is_union # -> ""



( run in 2.251 seconds using v1.01-cache-2.11-cpan-4ac696b4eb4 )