我是Erlang编程语言的新手.Erlang中是否有标准的构建工具?
我已经搜索了这些,不知道我应该使用哪一个.我不知道它用于什么样的场合?
我试过这段代码:
print_next(Current) ->
case mnesia:dirty_next(muppet, Current) of
'$end_of_table' ->
io:format("~n", []),
ok;
Next ->
[Muppet] = mnesia:dirty_read({muppet, Next}),
io:format("~p~n", [Muppet]),
print_next(Next),
ok
end.
print() ->
case mnesia:dirty_first(muppet) of
'$end_of_table' ->
ok;
First ->
[Muppet] = mnesia:dirty_read({muppet, First}),
io:format("~p~n", [Muppet]),
print_next(First),
ok
end.
Run Code Online (Sandbox Code Playgroud)
但它太长了.我也可以使用dirty_all_keys然后遍历键列表,但我想知道是否有更好的方法来打印Mnesia表内容.
有人可以解释gen_server:start()和之间的区别是gen_server:start_link()什么?
我被告知这是多线程的东西.
编辑: 如果我的gen_server是从多个线程调用的,它会一次执行吗?或者它会在这些线程之间创建并发吗?
现在我正在学习Erlang,我对运行和测试Erlang应用程序的方式有疑问.
我们对运行和测试Erlang程序有一些看法:
application:start(AppName).我的问题:我们可以从Erlang代码生成二进制可执行文件吗,就像C代码一样?如何在没有Erlang shell的情况下运行程序,我可以运行程序,输入一些命令,之后调用Erlang函数执行此命令?
例如,我有一个test.erl带有三个函数的module():
foo1() -> ...
foo2() -> ...
foo3() -> ...
Run Code Online (Sandbox Code Playgroud)
然后我想在终端运行程序并输入-a标志来调用函数foo1,-b标志foo2等等.
如何在erlang中创建一个解析器,它将采用一个正确形成的命题公式并将其转换为一些内部表示.
列出在erlang中创建解析器的可用工具以及使用它们的项目可能会有所帮助.
我试图将使用 rebar 构建的 REST API 示例转换为 rebar3 版本(http://jordenlowe.com/title/Explain_like_I_am_5_-_Erlang_REST_Framework_Cowboy)。我已添加jsx到app.src. 这可能是什么原因?在将其设为 rebar3 版本时,我还需要做些什么吗?
出现这个错误。
===> Failed to solve release:
Dependency jsx is specified as a dependency but is not reachable by the system.
Run Code Online (Sandbox Code Playgroud) 了解这些关于Erlang消息传递行为的时间顺序的事实:
如果进程A向进程B发送两条消息,则保证两条消息按它们发送的顺序到达.
如果进程A向进程B发送消息,然后向进程C发送消息,则无法保证它们的接收顺序.
同样,如果进程A和B向C发送消息,则无法保证接收消息的顺序.
我的问题是:
如果进程A和B向进程C发送消息,当A和B在相同的(微)时间内发送消息时,具有相同的内部功能,在同一节点和同一台机器中可以发送消息,接收顺序是什么?运行并行进程?
当我有一个Erlang进程ID时,可以使用pid/3或list_to_pid/1函数(内部做同样的事情)来获得用于调试目的的进程。
Process = pid(0,4,1).
Process = list_to_pid("<0.4.1>").
Run Code Online (Sandbox Code Playgroud)
所以问题是;那港口呢?
有很多功能接口可以接受process()和port()数据类型,例如register/2。因此,我需要知道是否有一种方法可以通过#Port<0.567>进程的ID(例如)来获取端口。禁止吗?如果是这样,有什么理由吗?