Od wersji PHP 8 otrzymamy nową instrukcję warunkową match. Będzie to świetna funkcja, która będzie częstszym wyborem do korzystania niż switch. Spójrzmy na różnice.
Klasyczna instrukcja http://php.net/switch, plaintext
$message = match ($statusCode) { 200, 300, 301, 302 => 'combined expressions', };
$message = [ $this->matchesRegex($line) => 'match A', $this->matchesOtherRegex($line) => 'match B', ][$line] ?? 'no match';
$message = match ($statusCode) { 200 => null, 500 => throw new ServerError(), default => 'unknown status code', };
Hm, ciekawie wyglada. Dzieki za info
Coś podobnego (ale dużo bardziej zaawansowanego) jest w Swifcie (jako część specyfikacji switch). Języki w ogóle się do siebie coraz bardziej upodabniają.
W Swifcie też dobrze wymyślili, że switch domyślnie nie przechodzi do kolejnej opcji. W sumie to jak się zastanowić, zachowanie switch znane z PHP i wielu innych językach C-podobnych jest absurdalne. Dużo częściej wstawia się break niż korzysta z domyślnego zachowania, czyli jest to kiepski pomysł. W Swifcie zamiast tego jest słowo "fallthrough", które włącza zachowanie znane z C:
Małe, a cieszy.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)