ERLANG函数,类似于while循环while(true)

ERLANG函数,类似于while循环while(true),erlang,Erlang,我对二郎很陌生。所以,我想做的是编写一个while循环,它一直工作到true。就像java中的while(true){x=x+1}。我想写一个这样的函数。我还想在while循环中运行bellow命令。那么输入这个命令的格式是什么呢 curl -v -k -X POST "https://localhost:8243/raspberrypi/1.0.0/device/vf98e6a7atyp/bulb?state=on" -H "accept: application/json" -H "Auth

我对二郎很陌生。所以,我想做的是编写一个while循环,它一直工作到true。就像java中的
while(true){x=x+1}
。我想写一个这样的函数。我还想在while循环中运行bellow命令。那么输入这个命令的格式是什么呢

curl -v -k -X POST "https://localhost:8243/raspberrypi/1.0.0/device/vf98e6a7atyp/bulb?state=on" -H "accept: application/json" -H "Authorization: Bearer 38180797-3181-3839-900d-bdaf259f056a"

有人能帮我吗?

其他语言中的循环都是通过Erlang中的递归函数调用来完成的。因此,请尝试以下方法:

run_forever() ->
    Output = os:cmd("curl -v -k -X POST 'https://localhost:8243/raspberrypi/1.0.0/device/vf98e6a7atyp/bulb?state=on' -H 'accept: application/json' -H 'Authorization: Bearer 38180797-3181-3839-900d-bdaf259f056a'"),
    io:format("Output from command:~n~s~n", [Output]),
    %% Don't want to repeat too quickly!  Sleep for five seconds
    timer:sleep(5000),
    run_forever().

所以这个函数做了一些事情,然后在最后调用自己。在其他一些语言中,您可能会担心调用堆栈会无限增长,但在Erlang中,我们有一种称为“尾部调用优化”的方法,这意味着如果一个函数做的最后一件事是调用另一个函数(可能是它自己),那么当前函数的堆栈帧将简单地替换为被调用函数的堆栈帧,堆栈大小保持不变。

在其他语言中使用循环所做的事情是通过Erlang中的递归函数调用来完成的。因此,请尝试以下方法:

run_forever() ->
    Output = os:cmd("curl -v -k -X POST 'https://localhost:8243/raspberrypi/1.0.0/device/vf98e6a7atyp/bulb?state=on' -H 'accept: application/json' -H 'Authorization: Bearer 38180797-3181-3839-900d-bdaf259f056a'"),
    io:format("Output from command:~n~s~n", [Output]),
    %% Don't want to repeat too quickly!  Sleep for five seconds
    timer:sleep(5000),
    run_forever().

所以这个函数做了一些事情,然后在最后调用自己。在其他一些语言中,您可能会担心调用堆栈会无限增长,但在Erlang中,我们有一种称为“尾部调用优化”的方法,这意味着如果一个函数做的最后一件事是调用另一个函数(可能是它自己),那么当前函数的堆栈帧将简单地替换为被调用函数的堆栈帧,堆栈大小保持不变。

我想从tail子串一个字符串。。。我想得到最后5个字符。。在erlang中有可能吗?请为此创建一个新问题。我想从tail中再串一个字符串。。。我想得到最后5个字符。。在erlang中是否可能?请为此创建一个新问题。