【问题标题】:I need to compare property values in StringTemplate我需要比较 StringTemplate 中的属性值
【发布时间】:2015-08-06 14:39:40
【问题描述】:

我有一个元组列表,我需要从以下位置发出类似 C 的布尔表达式:

ranges = [('a','z'),('0','9'),('_','_')]

我的模板:

"$ranges:{'$it.0$'<=c&&c<='$it.1$'}; separator='||'$"

这个输出:

'a'<=c&&c<='z'||'0'<=c&&c<='9'||'_'<=c&&c<='_'

我想检查$it.0$ 是否与$it.1$ 相同,并在这种情况下输出c==='$it.0$'(在我的示例中,这将为最后一个元组生成c==='_')。这可能吗?

【问题讨论】:

    标签: stringtemplate stringtemplate-4


    【解决方案1】:

    您不能在模板中进行任何计算(请参阅Stringtemplate compare strings does not work)。

    解决此问题的一种可能方法是使用自定义 Range 类,并将功能存储在其中。然后你可以在 range 对象上调用一个方法,返回 fromto 的值是否相等。

    $ranges:{ range | $if(range.fromToEqual)$c === '$range.from$'$else$'$range.from$' <= c && c <= '$range.to$'$endif$}; separator=" || "$
    

    其中Range类中的方法如下:

    public boolean getFromToEqual() { // note the 'get' prefix
        return from == to;
    }
    

    输出:

    'a' <= c && c <= 'b'||'1' <= c && c <= '9'|| c === '_'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 2012-02-18
      相关资源
      最近更新 更多