我想知道是否有比我在 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 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