Kotlin脚本:main函数没有在本地调用,不像在线判断

Kotlin script: main function does not get called locally, unlike in online judge

我正在尝试使用 Kotlin 参加在线 Codeforces 竞赛。

我的理解是,如果我的代码包含在单个文件中,我应该使用 Kotlin 脚本。

如果我在本地运行以下文件(版本1.6.10):

kotlin just_main.main.kts
// just_main.main.kts
fun main() {
    println("Hello World")
}

没有任何反应。我需要为它添加一个显式调用以实际执行 main:

// top_level_call.main.kts
fun main() {
    println("Hello World")
}

main()

到目前为止,一切正常。当我尝试将我的解决方案提交给 Codeforces 在线评委时出现问题。 judge 不需要顶层代码,而是 运行 的 main 函数。所以 just_main 运行 很好,但是 top_level_call 会产生编译错误:

Can't compile file:
program.kt:43:1: error: expecting a top level declaration

main()

^

这导致我不得不在本地尝试我的解决方案时添加 main() 调用,但每次上传尝试时都必须删除它的尴尬情况。

有没有办法让我本地的 Kotlin 表现得和在线判断一样,意味着隐含地 运行 任何主要功能(意味着 just_main 会产生输出)?

我还没有找到使用 Kotlin 脚本文件执行此操作的方法,但是您也可以使用普通的 .kt 文件,而文件中没有任何 classes(我的理解是 Kotlin 神奇地将它们变成了 Java class bytecode/files):

kotlinc a.kt && kotlin AKt < a.in

此“运行”a.kt 使用来自 a.in 的标准输入。

(是的,我是在写完问题后才发现的)