If statement StringTemplate 4<;如果>;不';好像不行

If statement StringTemplate 4<;如果>;不';好像不行,if-statement,stringtemplate,If Statement,Stringtemplate,我只使用了StringTemplate4一周,所以这可能是我正在做的事情,但我似乎无法使正常工作 我使用的是4.02(因为这是Maven存储库中的最新版本)。我有一个名为Variable的类。这是一个片段: class Variable { ... public boolean isArray() { return _bIsArray; } } 我有一个有一行的模板(分隔符是$,$): 如果我删除If并简单地让它对所有内容执行$ArrayAdd(…)$,那么ArrayA

我只使用了StringTemplate4一周,所以这可能是我正在做的事情,但我似乎无法使
正常工作

我使用的是4.02(因为这是Maven存储库中的最新版本)。我有一个名为
Variable
的类。这是一个片段:

class Variable
{
  ...
  public boolean isArray()
  {
    return _bIsArray;
  }
}
我有一个有一行的模板(分隔符是
$
$
):

如果我删除
If
并简单地让它对所有内容执行
$ArrayAdd(…)$
,那么
ArrayAdd
将被清楚地执行。然后我将
$if$
放回。我还在
isArray()
中放置了一个print语句,
isArray()
正在执行,并且大部分时间返回
false
,但偶尔会返回
true
(这正是我所期望的情况)。但是,
$ArrayAdd
永远不会从
$if$
中执行

我看了一下痕迹(我不擅长阅读),得到了:

declareSetGet:0227:load_local 0 stack=[],calls=ObjectClass\u sub1
声明集,sp=-1,nw=0
declareSetGet:0230:load#u prop#25:“isArray”堆栈=[
altLocation::Array::Custom],calls=ObjectClass\u sub1
申报者,sp=0,nw=0
declareSetGet:0233:brf 254 stack=[null],calls=ObjectClass\u sub1
申报者,sp=0,nw=0
ObjectClass:0121:newline stack=[],calls=ObjectClass,sp=-1,nw=959
ObjectClass:0122:write_str#15:“}”stack=[],calls=ObjectClass,sp=-1,nw=0
这是我希望执行
ArrayAdd
模板的情况之一。显然,它不是


有人能告诉我我遗漏了什么吗?

我想知道你是否应该这样做:

$if(x.array)$ $ArrayAdd(x, className)$ $endif$

具体来说,使用
x.array
而不是
x.isArray
,因为属性的名称是“array”,而“is”只是根据Java Beans的布尔属性访问器约定的前缀。

StringTemplate 4.0.7在Maven Central中:我敢打赌这不会有什么区别。我会失去:)它现在可以正常工作了!我仍然不明白为什么它调用了例程,但显然没有使用结果(在您的版本中)。但是,我会继续。谢谢你的帮助。
declareSetGet:0227: load_local    0         stack=[ ], calls=ObjectClass _sub1  
declareSetGet, sp=-1, nw=0
declareSetGet:0230: load_prop     #25:"isArray" stack=[  
altLocation<CUSTOM>::Array<1>::Custom<altLocationObj> ], calls=ObjectClass _sub1 
declareSetGet, sp=0, nw=0
declareSetGet:0233: brf           254       stack=[ null ], calls=ObjectClass _sub1 
declareSetGet, sp=0, nw=0
ObjectClass:0121:   newline                 stack=[ ], calls=ObjectClass, sp=-1, nw=959
ObjectClass:0122:   write_str     #15:"}"   stack=[ ], calls=ObjectClass, sp=-1, nw=0
$if(x.array)$ $ArrayAdd(x, className)$ $endif$