【问题标题】:Proper escript for Hello World in erlang?erlang中Hello World的正确脚本?
【发布时间】:2011-05-12 07:19:46
【问题描述】:

所以我知道基本的 Hello World 程序(输出字符串的程序不是为 Erlang 学习而设计的 spawn 和其他程序)如下

-module(hello).
-export([start/0]).

start() ->
  io:format("Hello, World!").

然后我运行 erl

>erl

输入

>c(hello)

然后

>hello

escript 版本会是这个吗?

#!/usr/bin/env escript
-export([main/1]).

main([]) -> io:format("Hello, World!~n").

然后

chmod u+x hello

你好,文件名在哪里?

为什么我不能使用与模块相同的格式? (main/0 和 main()) ?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    这正是 escript 系统的工作方式。您的 escript 必须包含一个函数 main/1 以供运行时调用。 escript 需要一种将命令行参数传递给函数的方法,它以字符串列表的形式执行此操作,因此您的 main 函数需要一个参数。

    当您构建一个模块并从 shell 手动运行它时,类似的要求适用 - 您的模块必须导出您要调用的函数(在您的示例中为 start/0)。

    事实上,你的例子是不正确的。您创建并编译模块但从不调用它。评估

     hello.
    

    在 shell 中简单地重复原子值hello。要真正调用你的 hello world 函数,你需要评估:

    hello:start().
    

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 2011-09-29
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      相关资源
      最近更新 更多