所以我知道基本的Hello World程序(如输出一个字符串而不是为Erlang设计的字符串学习用spawn和其他东西)如下
-module(hello).
-export([start/0]).
start() ->
io:format("Hello, World!").
Run Code Online (Sandbox Code Playgroud)
然后我跑了erl
>erl
Run Code Online (Sandbox Code Playgroud)
类型
>c(hello)
Run Code Online (Sandbox Code Playgroud)
然后
>hello
Run Code Online (Sandbox Code Playgroud)
对于escript版本会是这样吗?
#!/usr/bin/env escript
-export([main/1]).
main([]) -> io:format("Hello, World!~n").
Run Code Online (Sandbox Code Playgroud)
然后
chmod u+x hello
Run Code Online (Sandbox Code Playgroud)
hello是文件名吗?
为什么我不能使用与模块相同的格式?(main/0和main())?
arc*_*lus 11
这就是escript系统的工作方式.您的escript必须包含main/1要运行时调用的函数.escript需要一种方法将命令行参数传递给您的函数,并将其作为字符串列表执行,因此您的main函数需要使用一个参数.
当您构建模块并从shell手动运行时,类似的要求也适用 - 您的模块必须导出您要调用的函数(start/0在您的示例中).
实际上,您的示例是不正确的.您创建并编译模块但从不调用它.评估
hello.
Run Code Online (Sandbox Code Playgroud)
在shell中只需重复原子值hello.要实际调用hello world函数,您需要评估:
hello:start().
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |