【发布时间】:2017-06-23 16:28:56
【问题描述】:
我正在使用 erlang 中的列表,它每次都填充一个值,我想通过将其值乘以 10 来修改此列表。但是当我尝试这样做时,发生了以下事情:
E=[4*10].
"("
我搜索了 ascii 表,发现 ascii 值 40 只存储了符号“(”。 任何人都可以对此有所了解并告诉我如何通过仅在 List 内执行乘法来获得 E=[40] 吗?
【问题讨论】:
标签: erlang erlang-shell
我正在使用 erlang 中的列表,它每次都填充一个值,我想通过将其值乘以 10 来修改此列表。但是当我尝试这样做时,发生了以下事情:
E=[4*10].
"("
我搜索了 ascii 表,发现 ascii 值 40 只存储了符号“(”。 任何人都可以对此有所了解并告诉我如何通过仅在 List 内执行乘法来获得 E=[40] 吗?
【问题讨论】:
标签: erlang erlang-shell
字符串在 Erlang 中表示为字节列表,因此 "(" 与 [40] 完全相同。
它只是一个语法糖。每次 Erlang 显示一个列表时,如果它包含“可显示”的 ASCII 字符,它将显示字符串而不是数字列表。
您可以使用用户格式来控制显示:
io:format("Number ~w is character ~c\n", [40 40]).
【讨论】:
shell:strings(false)。
io:format() 让erlang 显示数字。我认为这是 Erlang 的一个可怕特性——但它就是这样......(续)
io:format() 更改默认行为并将列表输出为字符串——但我没有发明erlang!