0

我想知道是否有比我在 PHP 文档中找到的更丰富的“定义默认”匹配方式。以下来自https://www.php.net/manual/en/language.enumerations.methods.php

enum Suit implements Colorful
{
    case Hearts;
    case Diamonds;
    case Clubs;
    case Spades;

    // Fulfills the interface contract.
    public function color(): string
    {
        return match($this) {
            Suit::Hearts, Suit::Diamonds => 'Red',
            Suit::Clubs, Suit::Spades => 'Black',
        };
    }

}

上面不是证明我为什么要问我在问什么的最好例子,还想不出更好的例子,但是为了这个问题,想象一下有 10 套西装,9 套黑色和1个红色。看起来我必须在“黑色”的颜色匹配函数中重复 9 个案例......我希望(并在此处询问语法是否存在)有一种方法可以说“默认是 '黑色' ”并且只使用“红色”来表示我明确地说是“红色”的那个。有点像我在 switch 语句中的表现。PHP 枚举是否提供这样的语法?

4

1 回答 1

0

它与 PHP Enum 无关,而与match支持这种default情况的表达式有关。

enum Suit implements Colorful
{
    case Hearts;
    case Diamonds;
    case Clubs;
    case Spades;

    // Fulfills the interface contract.
    public function color(): string
    {
        return match($this) {
            Suit::Hearts, Suit::Diamonds => 'Red',
            default => 'Black'
        };
    }
}

echo Suit::Clubs->color(); // Black
echo Suit::Hearts->color(); // Red
于 2021-12-27T15:15:44.760 回答