我在将变量作为速度的映射添加到变量中时遇到问题,该变量已作为宏的属性传递。
考虑以下代码:
#macro ( test $attr )
1 $attr.edd
#set($attr.edd = "edd")
2 $attr.edd
#set($foo = {"bar" : "bar" })
3 $foo.edd
#set($foo.edd = "edd")
4 $foo.edd
#end
#test({"bar" : "bar" })
我期望以下输出:
1 $attr.edd 2 edd 3 $foo.edd 4 edd
但是我得到:
1 $attr.edd 2 $attr.edd 3 $foo.edd 4 edd
谁能为我解决这个问题?
最佳答案
这是很粗略的,但是我猜属性是最终的(考虑到速度对待变量的方式,这似乎有些奇怪/危险),因此重新定义变量似乎可以解决问题:
#macro ( test $attr )
#set($attr = $attr)
1 $attr.edd
#set($attr.edd = "edd")
2 $attr.edd
#set($foo = {"bar" : "bar" })
3 $foo.edd
#set($foo.edd = "edd")
4 $foo.edd
#end
#test({"bar" : "bar" })
我希望其他人会有更好的解决方案...