gpt4 book ai didi

scala - OCaml中的主要函数

转载 作者:行者123 更新时间:2023-12-03 05:05:58 25 4
gpt4 key购买 nike

对于一个受过 C 世界训练的程序员来说,这是我使用 OCaml 的主要方法。

let main () = 
Printf.printf "Hello, world - %d %s\n" (Array.length Sys.argv) Sys.argv.(0)
;;

main ()

但是,此代码在 ocaml/ocamlc/ocmalopt 上运行良好。

Printf.printf "Hello, world - %d %s\n" (Array.length Sys.argv)  Sys.argv.(0)
;;

这背后的逻辑是什么? OCaml 是否类似于脚本语言(即使它使用 ocamlc 或 ocamlopt 编译为二进制文件),因为它不需要 main 函数?

与Scala相比,我们可以从App中进行扩展,以便不定义main方法。

object Hello extends App {
class A

println(new A() getClass())
print("Hello, world")
}

即使在这种情况下,我们在解释器模式下执行时也需要有 Hello.main(args):即 scala hello.scala。 OCaml 似乎不需要对 ocaml(解释)、ocamlc 和 ocamlopt(编译)进行任何更改。

那么,我们需要 OCaml 中的 main 函数吗?如果是这样,OCaml 是否只生成从代码开头到结尾的代码?如果是这样,OCaml如何找到具有多个源代码的主代码?

最佳答案

OCaml 有点像脚本语言,在启动程序时会计算任何顶级表达式。通常有一个名为 main 的函数来调用程序的主要工作。但这根本没有必要。

表达式按照 OCaml 文件链接到可执行文件时出现的顺序进行计算。通常,这意味着对 main 的调用是启动程序时发生的最后一件事。其他文件通常出现在包含 main 的文件之前,并且这些文件的任何顶级代码都将首先执行。

关于scala - OCaml中的主要函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711563/

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