gpt4 book ai didi

code-generation - 是否可以在 Telosys 模板中调用专门创建的函数?

转载 作者:行者123 更新时间:2023-12-03 23:44:49 29 4
gpt4 key购买 nike

我使用 Telosys ( https://www.telosys.org ) 生成 Python 源代码,并且运行良好。但是我有一个特定的需求,可以通过调用特定的转换函数来解决。
是否可以创建一个特定的函数并在 Telosys 模板中调用它?
例如:myFunction(“abc”)$something.myFunction(“abc”)或其他任何东西
如有必要,我可以使用不同的语言(如 Java、Python 或 JavaScript)创建此函数。

最佳答案

Telosys 被设计为可扩展的,所以是的,您可以创建自己的函数并在模板中调用它们。
由于 Telosys 是用 Java 编写的,因此您必须用 Java 创建这些函数,然后使用“.vm”文件中的“ loader ”对象来加载您的类并调用此类中定义的方法。
以下是如何一步一步地做到这一点:

  • 使用您喜欢的 IDE 创建一个 Java 类来定义您的特定方法。此类可以在任何包中(包括“默认/未命名包”),如果您不需要该类的实例,则方法可以是“静态的”。
  • 编译这个类(目标是生成一个简单的“ .class ”文件或“ .jar ”文件,如果你愿意的话)
  • 将类(或 jar)放在模板包文件夹中:
  • 如果您有“ .class ”文件,请将其放入“ classes ”文件夹
  • 如果您有“ .jar ”文件,请将其放在“ lib ”文件夹中

  • 例子 :
    TelosysTools/templates/my-bundle/classes/MyClass.class
    TelosysTools/templates/my-bundle/lib/my-lib.jar
  • 在模板文件(“.vm”)中,使用“ $loader ”对象来加载你的Java类并调用它的任何方法
    请参阅此处的“$loader”引用:http://www.telosys.org/templates-doc/objects/loader.html

  • 如果你所有的方法都是“静态的”,你就不需要实例,所以只需使用“ ” $loader.loadClass() ”。例子 :
    ## load the class and keep it in a new “$Math” object (no instance created)
    #set( $Math = $loader.loadClass("java.lang.Math")
    ## use the static methods of this class
    $Math.random()
    如果你的方法不是“静态的”所以你需要一个实例,那么使用“ ” $loader.newInstance() ”。例子 :
    ## create an instance of StringBuilder and put it in the context with #set
    #set( $strBuilder = $loader.newInstance('java.lang.StringBuilder') )
    ## use the instance to call a method
    $strBuilder.append('aa')

    ## create new instance of a specific class : MyTool.class
    #set( $tool = $loader.newInstance('MyTool') )
    ## use the instance to call a method
    $tool.myFunction()
    所以总结一下,你可以使用Java-JRE提供的任何类(例如“Math”,“StringBuilder”),你可以通过添加“.jar”文件来重用现有的库(不要忘记添加所需的依赖项,如果jar 文件不是独立的)或者只是添加一个“.class”文件。

    关于code-generation - 是否可以在 Telosys 模板中调用专门创建的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63467530/

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