• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Składnia funkcji match()

VPS Starter Arubacloud
0 głosów
248 wizyt
pytanie zadane 10 kwietnia 2022 w PHP przez Bakkit Dyskutant (7,600 p.)

Cześć.

Mam problem z funkcją match, która została dodana do PHP w wersji 8.

Kod wygląda tak:

match($input) {
        default => action1(),
        "1" => action1(),
        "2" => action2(),
        "3" => action3(),
    };

Jak widać, przypadek "1" i default wykonują tę samą akcję, więc chciałbym skrócić te dwie linie do jednej. Znalazłem informację, że można zrobić coś takiego:

match($input) {
        "jeden", "dwa", "trzy", "cztery" => jakasAkcja(),
    };

i wtedy jakasAkcja() wykona się dla wszystkich przypadków, ale gdy po przecinku dodam default, czyli:

match($input) {
        "jeden", "dwa", "trzy", "cztery", default => jakasAkcja(),
    };

interpreter wyrzuca błąd składniowy.

 

Jest jakiś sposób na rozwiązanie tego problemu?

1 odpowiedź

+3 głosów
odpowiedź 10 kwietnia 2022 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 10 kwietnia 2022 przez Bakkit
 
Najlepsza

Prawdę mówiąc nie wiem czy można użyć default jednocześnie z innymi opcjami, nie spotkałem się z tym, więc może odpowiedź nie będzie w tym kontekście pomocna.

Jednak skoro zachowanie dla jeden, dwa, trzy, cztery i default jest takie same, to przecież równie dobrze możesz ich w ogóle nie podawać? Zostaw samo default, a wyżej wymień inne opcje, dla których akcja ma być inna. Wtedy automatycznie dla niewymienionych zostanie zastosowany default i wśród nich będą jeden, dwa, trzy, cztery.

Alternatywnie możesz też zrobić:

match($input) {
    "jeden", "dwa", "trzy", "cztery" => jakasAkcja(),
    default => jakasAkcja()
};

 

komentarz 10 kwietnia 2022 przez Bakkit Dyskutant (7,600 p.)

Jednak skoro zachowanie dla jeden, dwa, trzy, cztery i default jest takie same,

Nie jest :)

Bloczek kodu, który przytoczyłeś stworzyłem podglądowo (chyba aż za bardzo, moja wina). Mój problem bardziej odwzorowuje pierwszy kod w poście.

1
komentarz 10 kwietnia 2022 przez Arkadiusz Waluk Ekspert (287,550 p.)

Ok, ale zasada jest ta sama - jeśli nie wymienisz tam opcji 1, to i tak zostanie użyty default, a skoro akcja jest ta sama to zapisanie jej nic nie zmienia, co najwyżej może to być kwestia czytelności.

Czyli zamiast Twojego pierwszego kodu mogłoby być:

match($input) {
        default => action1(),
        "2" => action2(),
        "3" => action3(),
    };

I działanie będzie przecież identyczne jak z dodatkową linijką z "1".

2
komentarz 10 kwietnia 2022 przez Bakkit Dyskutant (7,600 p.)
Racja, zbyt pochopnie oceniłem Twoje rozwiązanie, dzięki! :)

Podobne pytania

0 głosów
1 odpowiedź 116 wizyt
pytanie zadane 31 grudnia 2016 w JavaScript przez Śmieszek_;3 Użytkownik (780 p.)
0 głosów
3 odpowiedzi 183 wizyt
pytanie zadane 14 lipca 2020 w PHP przez Filipczak Gaduła (4,020 p.)
+1 głos
1 odpowiedź 394 wizyt
pytanie zadane 11 stycznia 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...