所以我写了一个程序,它有一个字符串参数,输出如下:
-module(sayhi).
-export([sayhi/1]).
sayhi({greeting, Greeting}) -> io:fwrite(Greeting).
然后调用如下函数(从终端)。
c(sayhi).
ok
sayhi:sayhi({greeting, "HELLO!\n"}).
HELLO!
ok
直到现在一切都好。
但是当我尝试实现2个参数时,我得到错误:***参数1:参数数目错误
下面是我的代码:
-module(sayhi).
-export([sayhi/2]).
sayhi({greeting, Greeting}, {name, Name}) -> io:fwrite(Greeting, Name).
调用函数时:
sayhi:sayhi({greeting, "Hola "}, {name, "Sam"}).
程序运行成功,但没有给予我所需的输出。问题是来自我调用函数的语句吗?
如果我有3个,甚至10个参数呢?
2条答案
按热度按时间ux6nzvsh1#
Erlang有一个关于其所有内置函数的全面文档,例如
io:fwrite/1, io:fwrite/2, io:fwrite/3
(可以在这里找到)。如果你想使用带1个参数的函数,那么你可以这样调用它:
使用2个参数时,即
write(Format, Data)
,则:57hvy0tb2#
您也可以利用Erlang所称的
iolist
,这是一个包含特定类型的列表,可以是字符串,对于iolist,Erlang将列表作为一个字符串输出。例如:在 shell 中:
io:format()
返回ok
,这就是你在字符串末尾看到的内容。这不是最好的解决方案,因为你必须在单词之间添加空格(注意"Hello "
中的空格)。一个更好的解决方案是在单词之间自动添加空格,然后在末尾添加一个换行符,这样ok
就在单独的一行上:在 shell 中: