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
的标准输入。
(是的,我是在写完问题后才发现的)
我正在尝试使用 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
的标准输入。
(是的,我是在写完问题后才发现的)