Когда полезен скалярный оператор запятой Perl?
-
18-09-2019 - |
Вопрос
Есть ли какая-либо причина использовать скалярный оператор запятой где-либо, кроме как в for
петля?
Решение
Поскольку скалярная запятая Perl является "портом" оператора запятой C, эти комментарии вероятно, это уместно:
Время от времени вы оказываетесь в ситуации, в которой C ожидает одно выражение, но у вас есть две вещи, которые вы хотите сказать.Наиболее распространенный (и фактически единственный распространенный) пример находится в
for
цикл, в частности первое и третье управляющие выражения.Что делать, если (например) вы хотите иметь цикл, в которомi
считается начиная с0
Для10
в то же время , чтоj
ведет обратный отсчет от10
Для0
?
Итак, ваш инстинкт, что это в основном полезно в for
я думаю, что loops - это хороший вариант.
Другие советы
Я иногда использую его в условном (иногда ошибочно называемом "троичным") операторе, если код легче читать, чем разбивать его на реальные if / else:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
Он также может быть использован в некотором выражении, где важен последний результат, например, в grep
выражение, но в данном случае это то же самое, как если бы использовалась точка с запятой:
my @results = grep { setup(), condition() } @list;