Czy istnieje jakikolwiek powód, aby używać operatora przecinania skalarnego w dowolnym miejscu poza pętlą for
?Kiedy przydatny jest operator przecinka skalarnego Perla?
Odpowiedz
Ponieważ skalarne przecinek Perl jest „port” operatora C przecinek, these comments prawdopodobnie apropos:
Raz na jakiś czas, znajdziesz się w sytuacja, w której C oczekuje single wypowiedzi, ale masz dwie rzeczy, które chcesz powiedzieć. Najbardziej powszechny (i w rzeczywistości jedyny popularny) przykład to w pętli
for
, konkretnie pierwsze i trzecie kontrolujące wyrażenia . Co jeśli (przykładowo) chcesz mieć pętlę, w której liczy sięi
się z0
do10
jednocześnie, żej
odlicza od10
do0
?
Twój instynkt, że jest użyteczny głównie w pętlach for
, jest dobry.
I czasami używać go w warunkowej (czasami błędnie nazywany „trójskładnikowego”) operatora, jeśli kod jest bardziej czytelny niż zerwania go w prawdziwy if/else:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
Mógłby również być wykorzystywane w niektórych wypowiedzi którym ostatni wynik jest ważny, tak jak w wyrażeniu grep
, ale w tym przypadku jest tak samo, jak gdyby użyto średnik:
my @results = grep { setup(), condition() } @list;
Czy trójka nie jest operatorem "?:"? :) –
@eugene: to * a * operator potrójny, ale nie można go nazwać * operatorem trójkowym. – Ether
Code golfa. . . – mob
+1 mobrule; powiedział "jakikolwiek powód". –