Как делают я предотвращаю Список:: MoreUtils от предупреждения об использовании $a и $b только однажды?

Это попадает в область микро оптимизации. Самая большая часть Вашего времени попадает в инициализацию механизма PHP, начинающего работу.

Поэтому, если у Вас нет порядка десятков тысяч строк (или еще больше), Вы не должны быть обеспокоены им.

Для добавления я сделал маленький тест миллиона строк, где я использовал php для печати их и где я использовал php для вызова c программы, которая сделала то же самое, и различие было крохотным.

Немного больше информации

, Что происходит в 2-м примере, - то, что Вы "поворачиваете" PHP включения - выключения, не точно, что происходит, но для этого примера он соответствует.

дело, Вы должны быть более взволнованы по поводу, тот код, идет иметь большую логику вокруг этого? Я собираюсь разделить ту строку еще на большее количество строк или даже поместить ее в различные места? Действительно ли это - Представление приложения MVC?

Для 1 и 2 это мог быть бросок между любым методом. Но для 3 я пошел бы с методом 2 по этим причинам.

представление А в веб-приложении MVC является главным образом html/css. Таким образом, я хочу видеть, что быть отформатированным правильно и я хочу видеть в своем редакторе окраску HTML. Таким образом, это плюс.

20
задан Community 23 May 2017 в 12:13
поделиться

5 ответов

Зависит от того, что вы считаете элегантным.

no warnings qw(once);
our ($a, $b);

Одного из этих двух будет достаточно. Вы даже можете довольно легко ограничить их область действия.

my @sums = pairwise { no warnings qw(once); $a + $b } @x, @y;
my @sums = pairwise { our $a + our $b } @x, @y;

Явное указание пакета также подавит предупреждение. Если вы находитесь в main ,

my @sums = pairwise { $::a + $::b } @x, @y;
23
ответ дан 29 November 2019 в 23:41
поделиться

Add this near top of your program:

use vars qw( $a $b );

or, if you don't like the "obsolete" part of perldoc vars, simply add:

our ( $a, $b );
2
ответ дан 29 November 2019 в 23:41
поделиться

У меня такая же проблема с аналогичным модулем, который я пишу. Единственное решение, которое я нашел (кроме использования функций, которые используют $ a и $ b дважды, конечно), - это поместить эту строку где-нибудь в вашем коде:

$a = $b; # hack to disable warnings about "main::a" used only once

It в основном ничего не делает, но отключает предупреждение. Оставьте комментарий, чтобы будущим сопровождающим не приходилось читать ваши мысли.

1
ответ дан 29 November 2019 в 23:41
поделиться

Ага, это не вы. Вы можете не использовать предупреждения 'once'; или вы можете заранее объявить $a и $b так, чтобы они больше не использовались ни разу.

our ($a, $b);

делает этот трюк. Я предпочитаю этот вариант, потому что он не отключает предупреждения для всего остального, и он немного более описателен.

6
ответ дан 29 November 2019 в 23:41
поделиться

Возможно, это ошибка в List::Util.

Глобальное отключение предупреждений, вероятно, не очень хорошая идея, однако вы можете сделать что-то вроде этого:

{
  no warnings 'once';
  return join("_", @monsters) if @monsters && List::Util::reduce { $a && $b // 0 > 0 } 1,@monsters;
}

Это отключит соответствующую категорию предупреждений только для этой части кода.

6
ответ дан 29 November 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: