Ошибка при использовании неинициализированной переменной в выражении в файле шаблона - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь обработать файл шаблона, используя template-toolkit версии 2.29 и perl 5.28.1. При обработке файла шаблона я получаю предупреждение ниже
Аргумент "" дополнительно не числовой (+) в строке xyz
Я думаю, это потому, что в файле шаблона у нас есть неинициализированные переменные, которые используются в арифметическом выражении.
Нужно ли инициализировать переменную перед ее использованием в выражении, если используется template-toolkit версии 2.29? В приведенном ниже коде предупреждение появляется для строки 5.

Ниже приведен фрагмент кода.

[%- groups = {} -%] <br/>
[%- cols = [ 10, 10, 20, 30 ] -%] <br/>
[%- FOREACH c IN cols -%] <br/>
   [%- val = c -%] <br/>
   [%- groups.$val = groups.$val + 1 -%] <br/>
[%- END -%] <br/>

Если мы инициализируем groups.$val перед тем, как использовать его в выражении, предупреждения не будет.
Проблема не возникла, когда я использовал template-toolkit версии 2.15. Не уверены, что изменилось в 2.29 (или в любой другой версии, большей, чем 2.15), что вызывает предупреждение?

1 Ответ

3 голосов
/ 10 июня 2019

Это не ошибка, это предупреждение.

Если вы не хотите получать предупреждения, просто заполните переменную при присвоении ей:

[%- groups.$val = (groups.$val || 0) + 1 -%]

или, может быть

[%- groups.$val = (groups.$val.defined ? groups.$val : 0) + 1 -%]

К сожалению, нет оператора, похожего на Perl ++ или +=, который пропускал бы предупреждения, как это делают операторы Perl.

...