option

Форк
0
/
Option.php 
49 строк · 1.4 Кб
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Upside\Std;
6

7
/**
8
 * @template T of callable|object|array<mixed>|string|float|int|bool|null
9
 */
10
interface Option
11
{
12
    public function is_none(): bool;
13

14
    public function is_some(): bool;
15

16
    public function is_some_and(callable $op): bool;
17

18
    /**
19
     * @throws \Exception
20
     * @phpstan-return (T is null ? never : T)
21
     */
22
    public function expect_or(\Exception $e): callable|object|iterable|string|float|int|bool;
23

24
    /**
25
     * @throws \RuntimeException
26
     * @phpstan-return (T is null ? never : T)
27
     */
28
    public function expect(string $msg): callable|object|iterable|string|float|int|bool;
29

30
    /**
31
     * @throws \RuntimeException
32
     * @phpstan-return (T is null ? never : T)
33
     */
34
    public function unwrap(): callable|object|iterable|string|float|int|bool;
35

36
    /**
37
     * @template D of callable|object|array<mixed>|string|float|int|bool
38
     * @phpstan-param D $default
39
     * @phpstan-return (T is null ? D : T)
40
     */
41
    public function unwrap_or(callable|object|iterable|string|float|int|bool $default): callable|object|iterable|string|float|int|bool;
42

43
    /**
44
     * @template D of callable|object|array<mixed>|string|float|int|bool
45
     * @phpstan-param callable():D $op
46
     * @phpstan-return (T is null ? D : T)
47
     */
48
    public function unwrap_or_else(callable $op): callable|object|iterable|string|float|int|bool;
49
}
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.