我想从另一个变量赋值变量。我的代码看起来像这样从另一个变量赋值变量
<#macro ctglink c rhs x y z m e b>
<#assign ctg>
<#if ctgroutes["${y}..${x}-${m}"]??>ctgroutes['${y}..${x}-${m}']
<#elseif ctgroutes["${x}..${y}-${m}"]??>ctgroutes['${x}..${y}-${m}']
<#else>{}</#if>
</#assign>
然而,这ctg
变量被评估,只是ctgroutes['227..257-TPPMD04X02']
它不是实际评估字符串本身。
我试过?eval
和?interpret
以及其他一些非常黑客的事情,以使其工作,没有去。即使{}
是一个字符串
基本上,我需要分配功能,像老的PHP eval()
函数或其他东西。我试图访问映射的值,这些映射的键是从数据的状态派生而来的,所以我没有看到任何简单的方法来查询我的映射而没有对键进行评估。
更新:
- 我忘了包括在
elseif
有 - 无论哪种方式,我想
<#assign ctg = ctgroutes["${y}..${x}-${m}"]!ctgroutes["${x}..${y}-${m}"]>
但我得到以下错误:
引起:freemarker.core.InvalidReferenceException :以下评估为空或丢失: ==> ctgroutes [“$ {y} .. $ {x} - $ {m}”]!ctgroutes [“$ {x} .. $ {y} - $ {m}“] [在第5行第24列的模板”RouteCompare-WptTable.ftlh“中]
我想一个null
结果只返回一个空的地图,但是这似乎并不可能:
Caused by: java.lang.RuntimeException: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> ctgroutes["${y}..${x}-${m}"]!ctgroutes["${x}..${y}-${m}"] [in template "RouteCompare-WptTable.ftlh" at line 5, column 24]
所以基本上,我的目标是我需要分配,可以采取1 3变量值:
- ctgroutes [ “$ {Y} .. $ {X} - $ {米}”] //假设不是null
- ctgroutes [“$ {X} .. $ { y} - $ {m}“] //假设它不为空
- {} //空的地图
这样做的最佳方法是什么?
谢谢,虽然我更新了我的问题,因为这个建议没有起作用 –
我已经更新了一遍......我想你最终需要'!{}',而不是'!“{}”',即你想要一个真正的空地图。 – ddekany