map_size
Erlang
1> map_size(#{a=>1, b=>2, c=>3}).
3
返回一个整数,即键值对的数量
max
Erlang
2> max(1, 2).
2
3> max(1.0, 1).
1.0
4> max(1, 1.0).
1
5> max("abc", "b").
"b"
返回 Term1 和 Term2 中最大的值。如果这些项与 == 运算符,Term1 是 返回。
min
Erlang
6> min(1, 2).
1
7> min(1.0, 1).
1.0
8> min(1, 1.0).
1
9> min("abc", "b").
"abc"
返回 Term1 和 Term2 中的最小值。如果这些项与 == 运算符,Term1 是 返回。
pid_to_list
Erlang
10> erlang:pid_to_list(self()).
"<0.79.0>"
返回与文本对应的字符串 Pid 的表示。
processes
Erlang
11> processes().
[<0.0.0>,<0.1.0>,<0.2.0>,<0.3.0>,<0.4.0>,<0.5.0>,<0.6.0>,
<0.7.0>,<0.10.0>,<0.42.0>,<0.44.0>,<0.46.0>,<0.47.0>,
<0.49.0>,<0.50.0>,<0.51.0>,<0.52.0>,<0.53.0>,<0.54.0>,
<0.55.0>,<0.56.0>,<0.57.0>,<0.58.0>,<0.59.0>,<0.60.0>,
<0.61.0>,<0.62.0>,<0.63.0>,<0.64.0>|...]
返回对应于 本地节点上当前存在的所有进程。请注意,退出进程存在,但不是活动进程。 也就是说,is_process_alive/1 对于正在退出的进程返回 false,但其进程标识符是 part 从进程返回的结果/0。
put
Erlang
12> X = put(name, walrus), Y = put(name, carpenter),
12> Z = get(name),
12> {X, Y, Z}.
{undefined,walrus,carpenter}
将新的 Key 添加到进程字典中, 与值 Val 关联,并返回 undefined。如果 Key 存在,则旧的 value 被删除并替换为 Val,并且 该函数返回旧值。平均时间 此函数当前实现的复杂度为 O(1),最坏情况下的时间复杂度为O(N), 其中 N 是流程中的项数 字典。
registered
Erlang
14> registered().
[kernel_safe_sup,kernel_sup,user,global_name_server,
global_group,file_server_2,standard_error,kernel_refc,
logger_sup,logger_std_h_default,erts_code_purger,
code_server,erl_signal_server,erl_prim_loader,logger_proxy,
application_controller,init,inet_db,socket_registry,logger,
rex,logger_handler_watcher,standard_error_sup,user_drv]
返回已使用 register/2 注册的名称列表。
round
Erlang
15> round(42.1).
42
16> round(5.5).
6
17> round(-5.5).
-6
18> round(36028797018963969.0).
36028797018963968
通过舍入 Number 返回一个整数,在最后一个示例中,round(36028797018963969.0) 的计算结果为 36028797018963968。这样做的原因是 数字 36028797018963969.0 无法表示 与浮点值完全相同。相反,float 文本是 表示为 36028797018963968.0,这是最接近的数字 这可以完全表示为浮点值。
self
Erlang
19> self().
<0.79.0>
返回调用进程的进程标识符。
setelement
Erlang
20> setelement(2, {10, green, bottles}, red).
{10,red,bottles}
返回一个元组,该元组是参数 Tuple1 的副本,其中由整数参数 Index 指定的元素(第一个元素是索引为 1 的元素)替换为 argument 值。
size
Erlang
21> size({morni, mulle, bwange}).
3
22> size(<<11, 22, 33>>).
3
返回元组中的元素数或 二进制或位串中的字节,对于位字符串,将返回整字节数。 也就是说,如果位数 在位串中不能被 8 整除,则得到 字节数向下舍入。
spawn
Erlang
24> spawn(speed, regulator, [high_speed, thin_cut]).
<0.105.0>
25> =ERROR REPORT==== 1-Feb-2024::22:04:13.252000 ===
Error in process <0.105.0> with exit value:
{undef,[{speed,regulator,[high_speed,thin_cut],[]}]}
返回启动者 启动的新进程的进程标识符 Module:Function 在 Args 中的应用。error_handler:undefined_function(模块, 如果 Module:Function/Arity 不存在(其中 Arity 是 Args 的长度),则新进程将评估 Function, Args)。错误处理程序 可以重新定义。如果 error_handler 未定义,或者用户已定义 重新定义了默认error_handler,其替换为 undefined,则发生原因为 undef 的故障。
split_binary
Erlang
25> B = list_to_binary("0123456789").
<<"0123456789">>
26> byte_size(B).
10
27> {B1, B2} = split_binary(B,3).
{<<"012">>,<<"3456789">>}
28> byte_size(B1).
3
29> byte_size(B2).
7
返回一个元组,其中包含作为结果的二进制文件 将 Bin 拆分为两部分 位置位置 这不是破坏性操作。手术后, 总共有三个二进制文件。
statistics
Erlang
30> statistics(garbage_collection).
{538,586822,0}
返回有关垃圾回收的信息,对于某些实现,此信息可能无效。
Erlang
31> erlang:statistics(microstate_accounting).
[#{counters =>
#{aux => 0,check_io => 0,emulator => 0,gc => 0,other => 0,
port => 0,sleep => 0},
id => 4,type => scheduler},
#{counters => #{aux => 0,check_io => 0,...},
id => 6,type => dirty_cpu_scheduler},
#{counters => #{aux => 0,...},id => 5,...},
#{counters => #{...},...},
#{...}|...]
返回输入, 这是总字节数 通过端口接收,并输出, 这是输出到端口的总字节数。
Erlang
32> statistics(reductions).
{444785,444785}
返回有关减少的信息
Erlang
33> statistics(runtime).
{3453,3453}
返回有关运行时的信息(以毫秒为单位)。这是所有线程的运行时总和 在 Erlang 运行时系统中,因此可以更大 比挂钟时间。
Erlang
37> Ts1 = lists:sort(erlang:statistics(scheduler_wall_time)), ok.
ok
38> lists:map(fun({{I, A0, T0}, {I, A1, T1}}) ->
38> {I, (A1 - A0)/(T1 - T0)} end, lists:zip(Ts0,Ts1)).
[{1,6.608032257562958e-4},
{2,0.0},
{3,0.0},
{4,0.0},
{5,0.0},
{6,0.0},
{7,0.0},
{8,0.0},
{9,0.0},
{10,0.0},
{11,0.0},
{12,0.0},
{13,0.0},
{14,0.0},
{15,0.0},
{16,0.0},
{17,0.0},
{18,0.0},
{19,0.0},
{20,0.0},
{21,0.0},
{22,0.0},
{23,0.0},
{24,0.0}]
您可以使用scheduler_wall_time来计算 调度程序利用率。首先,对值进行采样 由 erlang:statistics(scheduler_wall_time) 返回。一段时间后,用户拍摄另一个快照并计算 每个调度程序的调度程序利用率。
term_to_binary
Erlang
39> Bin = term_to_binary(hello).
<<131,100,0,5,104,101,108,108,111>>
40> hello = binary_to_term(Bin).
hello
返回一个二进制数据对象,该对象是根据 Erlang 外部对 Term 进行编码的结果 术语格式。这可以用于各种目的,例如, 以有效的方式将术语写入文件,或发送 Erlang 术语对某种类型的通信渠道不是 由分布式 Erlang 支持。