Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ All Result types (both Ok and Err) implement these methods:
- `inspectErr(callable $fn): Result` - Calls a function with the error value if Err

#### Pattern Matching
- `match(callable $okFn, callable $errFn): mixed` - Pattern match on the Result
- `match(callable $ok, callable $err): mixed` - Pattern match on the Result

## License

Expand Down
10 changes: 5 additions & 5 deletions src/Err.php
Original file line number Diff line number Diff line change
Expand Up @@ -147,15 +147,15 @@ public function mapOr(mixed $default, callable $fn): mixed
* @template U
* @template V
*
* @param callable(): U $default_fn
* @param callable(): U $defaultFn
* @param callable(never): V $fn
*
* @return U
*/
#[Override]
public function mapOrElse(callable $default_fn, callable $fn): mixed
public function mapOrElse(callable $defaultFn, callable $fn): mixed
{
return $default_fn();
return $defaultFn();
}

/**
Expand Down Expand Up @@ -189,8 +189,8 @@ public function orElse(callable $fn): Result
}

#[Override]
public function match(callable $ok_fn, callable $err_fn): mixed
public function match(callable $ok, callable $err): mixed
{
return $err_fn($this->value);
return $err($this->value);
}
}
8 changes: 4 additions & 4 deletions src/Ok.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,13 +146,13 @@ public function mapOr(mixed $default, callable $fn): mixed
* @template U
* @template V
*
* @param callable(): V $default_fn
* @param callable(): V $defaultFn
* @param callable(T): U $fn
*
* @return U
*/
#[Override]
public function mapOrElse(callable $default_fn, callable $fn): mixed
public function mapOrElse(callable $defaultFn, callable $fn): mixed
{
return $fn($this->value);
}
Expand Down Expand Up @@ -188,8 +188,8 @@ public function orElse(callable $fn): Result
}

#[Override]
public function match(callable $ok_fn, callable $err_fn): mixed
public function match(callable $ok, callable $err): mixed
{
return $ok_fn($this->value);
return $ok($this->value);
}
}
12 changes: 6 additions & 6 deletions src/Result.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,12 @@ public function mapOr(mixed $default, callable $fn): mixed;
*
* @template U
*
* @param callable(): U $default_fn
* @param callable(): U $defaultFn
* @param callable(T): U $fn
*
* @return U
*/
public function mapOrElse(callable $default_fn, callable $fn): mixed;
public function mapOrElse(callable $defaultFn, callable $fn): mixed;

/**
* 成功の場合は第2の結果を返し、失敗の場合は最初のエラーを返します.
Expand Down Expand Up @@ -206,15 +206,15 @@ public function or(self $res): self;
public function orElse(callable $fn): self;

/**
* 成功の場合はok_fnを、失敗の場合はerr_fnを適用します.
* 成功の場合はokを、失敗の場合はerrを適用します.
*
* @template U
* @template V
*
* @param callable(T): U $ok_fn 成功値に適用する関数
* @param callable(E): V $err_fn エラー値に適用する関数
* @param callable(T): U $ok 成功値に適用する関数
* @param callable(E): V $err エラー値に適用する関数
*
* @return U|V 適用された関数の結果
*/
public function match(callable $ok_fn, callable $err_fn): mixed;
public function match(callable $ok, callable $err): mixed;
}
19 changes: 19 additions & 0 deletions tests/ErrTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,25 @@ public function match_withDifferentReturnTypes_returns_err_branch(): void
$this->assertSame(['status' => 'error', 'code' => 404], $result);
}

#[Test]
public function match_supportsNamedArguments(): void
{
$err = new Err('error');
$result = $err->match(
ok: fn ($value) => "Success: $value",
err: fn ($error) => "Error: $error",
);
$this->assertSame('Error: error', $result);
}

#[Test]
public function mapOrElse_supportsNamedArguments(): void
{
$err = new Err('error');
$result = $err->mapOrElse(defaultFn: fn () => 100, fn: fn ($x) => $x * 2);
$this->assertSame(100, $result);
}

#[Test]
public function err_withNullValue_handles_null(): void
{
Expand Down
19 changes: 19 additions & 0 deletions tests/OkTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,25 @@ public function match_withDifferentReturnTypes_returns_ok_branch(): void
$this->assertSame(5, $result);
}

#[Test]
public function match_supportsNamedArguments(): void
{
$ok = new Ok(42);
$result = $ok->match(
ok: fn ($value) => "Success: $value",
err: fn ($error) => "Error: $error",
);
$this->assertSame('Success: 42', $result);
}

#[Test]
public function mapOrElse_supportsNamedArguments(): void
{
$ok = new Ok(10);
$result = $ok->mapOrElse(defaultFn: fn () => 100, fn: fn ($x) => $x * 2);
$this->assertSame(20, $result);
}

#[Test]
public function ok_withNullValue_handles_null(): void
{
Expand Down
Loading