Re: Empty subject in match and switch constructions
| From: | Claude Pache | Date: | Tue, 04 Feb 2025 10:10:58 +0000 |
| Subject: | Re: Empty subject in match and switch constructions | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-126282@lists.php.net to get a copy of this message | ||
> Le 4 févr. 2025 à 10:34, Dmitry Derepko <xepozzd@gmail.com> a écrit :
>
> Hi, Claude!
>
>> On Feb 4, 2025, at 11:44 AM, Claude Pache <claude.pache@gmail.com> wrote:
>>
>> Hi,
>>
>> One issue to resolve is how to interpret:
>>
>> ```php
>> $x = match {
>> preg_match('/a/', 'a') => "will it be matched ..."
>> , default => "... or not?"
>> };
>> ```
>>
>> —Claude
>
> I wouldn’t discuss it there because the proposal is only about short syntax.
> So making “match” work in different way is not a goal for the change.
>
> It must work as full form “match(true)”: strict match, which is "===“.
> If you’re going to use non-strict comparison check “switch” operator:
> https://3v4l.org/tHkJu
> Anyway, as for me it should be another thread. Thanks!
Hi Dmitry,
The issue absolutely belong to a thread discussing making “match (true) {}” equivalent to
“match {}”. It doesn’t matter what is logical or simple, you have also think about what is
intuitive or, conversely, confusing.
With
match (true) { $foo => ... }, it is clear you are comparing $foo with the
literal value true.
With match { $foo => ... }, it is not intuitive at all that you are *not* just
checking the condition $foo, but rather you are comparing $foo with some default literal value. The
difference matters.
Therefore, I think it is a bad idea to make match (true) { } equivalent to match
{ }.
—Claude