> On Feb 2, 2025, at 4:04 PM, Dmitry Derepko <[email protected]> wrote:
> 
> Hi!
> 
> I’m thinking about making match (true) and switch (true) be more lightweight 
> by removing the subject “(true)” and making matching “true condition” by 
> default.
> So $var = match (true) { … } can be used as $var = match { … }. 
> 
> It’s often used in Kotlin. Pretty convenient way to use combined conditions. 
> It’s natively understandable because there should be a condition:
> 
> $result = match {
>   $x < $n => …,
>   $x > $n => …,
>   else => …,
> }
> 
> The same explanation for switch construction, but in Kotlin it’s the same 
> construction “when":
> 
> 
> val result = when {
>   x < n ->  …
>   x > n -> …
>   else -> …
> }
> 
> var result = null
> when {
>   x < n ->  { result = … }
>   x > n ->  { result = … }
>   else -> return
> }
> 
> https://kotlinlang.org/docs/control-flow.html#when-expressions-and-statements`when`
>  construction is overwhelming, but some features are totally handy, such as 
> checking for class of the subject:
> when (obj) {
>   is Class1 -> …
>   is Class2 -> …
>   else -> ...
> }
> 
> Which was implemented by Ilija Tovilo in: 
> https://github.com/php/php-src/compare/master...iluuu1994:pattern-matching
> 
> By the way, what do you think about allowing to drop the subject of match / 
> switch as a first iteration?
> Maybe would be better to ask Ilija to recreate his PR?
> 
> 
> ----------
> 
> Best regards,
> Dmitrii Derepko.
> @xepozz

I would like to bring the discussion up and try to figure out all pros and cons 
of this ability.
Moreover, coming Pattern Matching is a great addition to have this merged:

$x = match {
  $a is “pattern” -> …
  $b is “pattern” -> …
  $c === null -> …
  $this->lastChance($d) -> …
  default -> ...
}

Again, it should work as it would have `(true)` context. So the following 
snippet:

var_dump(match(true) {
  1=>'one',
  0=>'zero',
  default=>'default',
});

will produce “default”, because “true” is not “1” and “0”.

IDE may highlight such cases because they’ll never match so it would be 
detected as dead code.

----------

Best regards,
Dmitrii Derepko.
@xepozz

Reply via email to