2010-11-18 2 views
3

그래서 나는erlang에서 Hello World의 적절한 escript가 필요합니까?

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

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

을 다음과 같이 (출력 한 문자열이 아닌 얼랑 산란 및 기타 물건과 학습을 위해 설계된 하나 같은) 기본 안녕하세요 프로그램입니다 그럼 난 ERL

를 실행하는 것을 알고
>erl 

>c(hello) 

하고

에스컬트 버전의 경우 이럴 수 있습니까?

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

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

그런

chmod u+x hello 

파일 이름은 인사를 어디?

모듈과 동일한 형식을 사용할 수없는 이유는 무엇입니까? (주/0 및 주())?

답변

10

이것은 에스컬트 시스템이 작동하는 방식입니다. 런타임에 호출 할 escript에는 main/1 함수가 있어야합니다. escript는 함수에 명령 행 인수를 전달하는 방법이 필요하며 문자열 목록으로 사용하므로 main 함수가 하나의 인수를 취해야합니다.

모듈을 빌드하고 쉘에서 수동으로 실행하면 유사한 요구 사항이 적용됩니다. 모듈은 호출 할 함수 (예제에서는 start/0)를 내 보내야합니다.

실제로 예가 잘못되었습니다. 모듈을 만들고 컴파일하지만 절대로 호출하지 마십시오. 셸

hello. 

평가 간단히 원자 값 hello를 반복한다. 안녕하세요 세계 기능을 실제로 호출하려면 다음을 평가해야합니다.

hello:start(). 
관련 문제