2010-09-21 16 views
5

Erlang'da yeniyim ve bazı Erlang yapılarını denedim. Programım böyle bir şey davranması gerektiğini: Yardımlarınız için şimdiden ErlangErlang - kasa yapımı

-module(tested). 
-export([main/0]). 

main() -> 
    {ok, X} = io:fread("","~d"), 
    case X == 42 of 
    true -> io:fwrite("Hi\n"); 
    false -> io:fwrite("Hello\n") 
    end. 

Teşekkür içinde

if x == 42: 
    print "Hi" 
else: 
    print "Hello" 

İşte benim kodudur.

cevap

4

{ok, [X]} = io:fread("","~d") kullanın (köşeli parantezleri X).

fread Eğer 42 karşılaştırabilirsiniz önce listenin dışına elemanını almak gerekir, böylece (birden fazla jeton okuyorsanız durumda mantıklı) başlığın ikinci eleman olarak bir listesini döndürür.

case X of 
    42 -> io:fwrite("Hi\n"); 
    _ -> io:fwrite("Hello\n") 
end. 
+0

herhangi bir fikir neden 'io: fread (" '> enter' ~ d yerine desen == sonucu, sen X kendisinde desen maç, yani basitçe olabilir eşleşen

Not ' "{ "*) .' ok}' '42 'klavye getiriler giren okur"? Daha önce "ok", ""} notasyonunu görmedim. –

+4

@Manoj: Erlang olarak dizeleri sadece tamsayı listesi. Yani dize ' "*"' ve liste '[42]' aynı şey (42 ASCII yıldız işareti temsil eden sayı olmak üzere). Sadece yazdırılabilir ASCII aralığında tamsayı içeren bir liste görüntülerken, erlang bir dize olarak gösterecektir. – sepp2k

+0

Teşekkürler. İşe yarıyor :) – szemek