我对埃朗很陌生。因此,我想做的是编写一个while循环,直到有效。就像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"
任何人都可以帮我吗?
答案 0 :(得分:2)
其他语言中的循环操作是通过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中,我们有一种称为“尾部调用优化”的方法,这意味着,如果一个函数所做的最后一件事情是调用另一个函数(可能是自身),则该堆栈将当前函数的框架替换为被调用函数之一,并且堆栈大小保持不变。