类似于 while 循环的 ERLANG 函数 while(true)
ERLANG function which is like a while loop while(true)
我对 ERLANG 很陌生。所以,我想做的是编写一个 while 循环,它一直工作到 true。就像 java 中的 while(true){x=x+1}
。我想写那种功能。以及我想 运行 在 while 循环中发出命令。那么输入这个命令的格式是什么。
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 中我们有一个叫做 "tail call optimisation" 的东西,这意味着如果一个函数做的最后一件事是调用另一个函数(可能是它自己),那么堆栈当前函数的框架被简单地替换为被调用函数之一,堆栈大小保持不变。
我对 ERLANG 很陌生。所以,我想做的是编写一个 while 循环,它一直工作到 true。就像 java 中的 while(true){x=x+1}
。我想写那种功能。以及我想 运行 在 while 循环中发出命令。那么输入这个命令的格式是什么。
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 中我们有一个叫做 "tail call optimisation" 的东西,这意味着如果一个函数做的最后一件事是调用另一个函数(可能是它自己),那么堆栈当前函数的框架被简单地替换为被调用函数之一,堆栈大小保持不变。