Символы доллара и восклицательного знака (челка) в VTL

Недавно я столкнулся с этими двумя переменными в каком-то коде Velocity:

$!variable1
!$variable2

Меня удивило их сходство, поэтому я засомневался в правильности кода и заинтересовался поиском различий между ними.

Возможно ли, что скорость допускает любой порядок этих двух символов или они имеют разное назначение? Ты знаешь ответ?


person Jr.    schedule 31.08.2018    source источник


Ответы (2)


@младший Вот руководство, которому я следовал при проведении исследований и разработок виртуальных машин: http://velocity.apache.org/engine/1.7/user-guide.html

Velocity использует символы !$ и $! аннотации к разным вещам. Если вы используете !$, это будет в основном то же самое, что и обычный "!" оператор, но $! используется в качестве базовой проверки, чтобы увидеть, является ли переменная пустой, и если да, то она выводит ее как пустую строку. Если ваша переменная пуста или равна нулю, и вы не используете $! аннотацию, он напечатает фактическое имя переменной в виде строки.

person Francois Du Toit    schedule 04.09.2018

Я много гуглил и переполнял стек, прежде чем наконец нашел ответ на people.apache.org.

В соответствии с этим:

Очень легко спутать тихую ссылочную нотацию с логическим не-оператором. Используя not-Operator, вы используете !${foo}, а тихая ссылочная нотация - $!{foo}. И да, иногда вы будете получать !$!{foo}...

Легко в конце концов, жаль, что это не поразило меня сразу. Надеюсь, это поможет кому-то.

person Jr.    schedule 31.08.2018
comment
Нелегко искать специальные символы в Google... Я не нашел ничего полезного, поэтому открыл документацию и начал искать ! символ - person Jr.; 31.08.2018