On Sun, Mar 29, 2020, at 4:04 PM, Ilija Tovilo wrote:
> > Having two syntaxes for one keyword is not a good idea,
>
> We're already doing that. What about classes vs anonymous objects?
> Functions vs closures?
> They're using the same keywords. There's no confusion.
>
> Ilija
There's subtle and important differences there.
An anonymous function is still a function, in that it is a routine that takes
input and produces output. A closure is, technically, an anonymous function
that has imported variables from its parent scope.
Anonymous classes (not anonymous objects) are implemented as, legitimately,
classes; they just have an arbitrary internal name. The object that results
can be used exactly like any other object, by design.
I don't believe that's the case here, however. `switch` is a language
construct for a *statement*, which branches the flow of control of the program.
What you're proposing is a language construct for an *expression*, which
evaluates depending on internal logic to a different value.
Those are sufficiently distinct that I agree they should have distinct
keywords. Plus, the internal syntax is non-trivial to switch back and forth
between (break vs not, etc.), so it is misleading for people to present them as
two slight variants on the same thing; they're really quite distinct, and
that's OK.
My recommendation would be to just borrow Rust's keyword:
$result = match ($var) {
$expression => $expression;
$expression => $expression;
$expression => $expression;
default => $expression;
}
--Larry Garfield
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php