枚举方法匹配“默认”

问题描述 投票:0回答:1

我想知道是否有比我在 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 枚举提供这样的语法吗?

php enums php-8.1
1个回答
1
投票

它与 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
© www.soinside.com 2019 - 2024. All rights reserved.