我使用Telosys (https://www.telosys.org)生成Python源代码,它工作得很好。但我有一个特殊的需求,可以通过调用特定的转换函数来解决。
是否有可能创建一个特定的函数并在Telosys模板中调用它?
例如:myFunction(“abc”)或$something.myFunction(“abc”)或其他任何东西
如果有必要,我可以用不同的语言(如JavaScript、Python或)创建这个函数。
发布于 2020-08-19 10:02:55
Telosys的设计是可扩展的,因此您可以创建自己的函数并在模板中调用它们。由于Telosys是用Java编写的,您必须在Java中创建这些函数,然后使用"loader“对象在".vm”文件中加载类并调用该类中定义的方法。
下面是如何一步一步地做这件事:
E 227“文件,则将其放入”E 128libE 229“文件夹<代码>H 230F 231例子:
TelosysTools/templates/my-bundle/classes/MyClass.class
TelosysTools/templates/my-bundle/lib/my-lib.jar模板文件(“”)中的
如果所有方法都是“静态的”,则不需要实例,所以只需使用“$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提供的任何类(例如“数学”、“StringBuilder”),您可以通过添加“.jar”文件(不要忘记添加jar文件不是独立的)来重用现有的库(不要忘记添加一个“.class”文件)。
https://stackoverflow.com/questions/63467530
复制相似问题