2010-11-18 20 views
3

YaniMerhaba Dünya'da erlang için uygun eskort mu?

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

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

aşağıdaki gibi (çıkışa biri bir dize değil Erlang spawn ve diğer malzeme ile öğrenme için tasarlanmış bir gibi) temel Merhaba Dünya Programı Sonra erl

çalıştırmak olduğunu biliyoruz
>erl 

tip

>c(hello) 

ve

>hello 

Escript versiyonu için bu mu?

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

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

Sonra

chmod u+x hello 

dosya Merhaba nerede?

Neden modülle aynı biçimi kullanamıyorum? (ana/0 ve ana())?

cevap

10

Bu, escript sisteminin işleyiş şeklidir. Esetimizin, çalışma zamanının çağrılması için main/1 işlevini içermesi gerekir. Eskort, komut satırı argümanlarını işlevinize iletmenin bir yolunu gerektirir ve bunu dizelerin bir listesi olarak yapar, dolayısıyla main işlevinizin bir bağımsız değişken alması gerekir.

Bir modül oluşturup kabuğu el ile çalıştırdığınızda, benzer bir gereksinim uygulanır - modülünüzde aramak istediğiniz işlevi (örneğinizde start/0) dışa aktarmanız gerekir.

Aslında, örneğiniz yanlış. Modülü oluşturup derlersiniz, ancak asla aramaz. kabuğunda

hello. 

değerlendirilmesi sadece atomu değeri hello tekrarlar. aslında merhaba dünya işlevini çağırmak için değerlendirmek gerekir:

hello:start(). 
İlgili konular