gpt4 book ai didi

java - 在 stringtemplate v4 中实现自定义函数

转载 作者:行者123 更新时间:2023-11-30 11:22:33 46 4
gpt4 key购买 nike

在 StringTemplate v3 中,我们有一个自定义的 Java HashMap 实现,它会在提供的键上调用一个函数并返回函数结果,而不是进行实际的 hashmap 查找。我们会将此 HashMap 的实例作为属性添加到 stringtemplate。这将允许我们在 StringTemplate 中编写自定义函数。我们会这样调用它:

$myfunc.("argument")$

$somearray:{ v |
$myfunc.("value: " + v)$
}$

myfunc HashMap 会在这里得到一个 String 类型的键

在 v4 中不再可能使用 + 连接,建议的更改是将“值”+ v 变成匿名模板:

$somearray:{ v |
$myfunc.({value: $v$})$
}$

在这种情况下,一个 ST 对象被传递给 HashMap,我可以在它上面调用 'render()' 来生成我通常会得到的文本,但是:属性 'v' 不再从周围传递范围。给定一个 ST 对象,我如何才能找到周围的范围 (ST),以便我可以复制属性并使其正常工作?

我真的不想把我的代码改成

$somearray:{ v |
$myfunc.((v:{ v | value: $v$}))$
}$

因为我们有一个很大的代码库,这是一个非常具有破坏性的变化。

还有其他方法可以实现我在这里想要的吗?我实际上是在尝试使用字符串参数调用 Java 函数,并让它向模板返回一个值,字符串参数是一个可以访问封闭范围属性的表达式。

最佳答案

您可以在模板周围使用“to string”运算符(...):

$somearray:{ v |
$myfunc.(({value: $v$}))$
}$

关于java - 在 stringtemplate v4 中实现自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650582/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com