Erlang - 案例建设

sze*_*mek 5 erlang

我是Erlang的新手,我尝试了一些Erlang结构.我的程序应该像这样:

if x == 42:
    print "Hi"
else:
    print "Hello"
Run Code Online (Sandbox Code Playgroud)

这是我在Erlang中的代码

-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.
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

sep*_*p2k 4

使用{ok, [X]} = io:fread("","~d")( 两边的括号X)。

fread返回一个列表作为元组的第二个元素(如果您正在读取多个标记,这很有意义),因此您需要先将该元素从列表中取出,然后才能将其与42.

请注意,您可以简单地对 X 本身进行模式匹配,而不是对 == 结果进行模式匹配,即:

case X of
  42 -> io:fwrite("Hi\n");
  _ -> io:fwrite("Hello\n")
end.
Run Code Online (Sandbox Code Playgroud)

  • @Manoj:在 Erlang 中,字符串只是整数列表。所以字符串文字 `"*"` 和列表 `[42]` 是同一件事(42 是代表 ASCII 中星号的数字)。当显示仅包含可打印 ASCII 范围内的整数的列表时,erlang 会将其显示为字符串。 (4认同)