我注意到IntelliJ可以将.kts文件解析为Kotlin,代码编辑器将它们作为自由浮动的Kotlin文件进行解析.您也可以像使用main方法的Kotlin文件一样在IntelliJ中运行脚本.该脚本从上到下执行.
这个表单对于我正在处理的项目来说是完美的,只要我知道在Java或Kotlin中使用它们的简单方法.
从Java或Kotlin"运行"这些脚本的惯用方法是什么?
Ale*_*lov 27
请注意,Kotlin中的脚本文件支持仍然是实验性的.这是一个未记录的功能,我们仍在设计过程中.今天工作的东西明天可能会改变,破裂或消失.
也就是说,目前有两种方法可以调用脚本.您可以使用命令行编译器:
kotlinc -script foo.kts <args>
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接从IntelliJ IDEA调用脚本,方法是右键单击编辑器或在.kts文件的项目视图中选择"运行...":
xjc*_*jcl 10
从 2020 年( Kotlin 1.3.70 )开始,您可以使用简单的
kotlin script.main.kts
Run Code Online (Sandbox Code Playgroud)
请注意,使用文件扩展名.main.kts而不是.kts 似乎很重要。
请注意,对我来说,如果定义了该函数,这似乎不会运行该main()函数,我必须main()在顶层添加手动调用。
Kotlin 脚本的优点之一是能够在单个文件中声明代码和依赖项(使用,请参阅此处的@file:DependsOn示例)
我发布了一个简单的库,让你从常规的Kotlin程序中运行脚本.
https://github.com/s1monw1/KtsRunner
示例类
data class ClassFromScript(val x: String)
Run Code Online (Sandbox Code Playgroud)该.kts文件
import de.swirtz.ktsrunner.objectloader.ClassFromScript
ClassFromScript("I was created in kts")
Run Code Online (Sandbox Code Playgroud)加载类的代码
val scriptReader = Files.newBufferedReader(Paths.get("path/classDeclaration.kts"))
val loadedObj: ClassFromScript = KtsObjectLoader().load<ClassFromScript>(scriptReader)
println(loadedObj.x) // >> I was created in kts
Run Code Online (Sandbox Code Playgroud)如图所示,KtsObjectLoader该类可用于执行.kts脚本并返回其结果.该示例显示了一个脚本,该脚本创建ClassFromScript通过KtsObjectLoader常规程序加载然后处理的类型的实例.
| 归档时间: |
|
| 查看次数: |
12237 次 |
| 最近记录: |