使用erlang'的障碍;s列表

使用erlang'的障碍;s列表,erlang,erlang-shell,Erlang,Erlang Shell,我在使用erlang中的列表,它每次都用一个值填充,我想通过将它的值乘以10来修改这个列表。但当我试着这样做时,发生了以下事情: E=[4*10]. "(" 我搜索了ascii表,发现ascii值40是为符号“(“仅”)存储的。 有谁能解释一下,并告诉我如何只在列表中执行乘法就可以得到E=[40]。字符串在Erlang中表示为字节列表,因此表示为”(“它与[40]完全相同 每次Erlang显示一个列表时,如果它包含“可显示”的ASCII字符,它将显示字符串而不是数字列表 您可以使用用户格式控

我在使用erlang中的列表,它每次都用一个值填充,我想通过将它的值乘以
10
来修改这个列表。但当我试着这样做时,发生了以下事情:

 E=[4*10].
"("
我搜索了ascii表,发现ascii值40是为符号“(“仅”)存储的。
有谁能解释一下,并告诉我如何只在列表中执行乘法就可以得到E=[40]。

字符串在Erlang中表示为字节列表,因此表示为
”(“
它与[40]完全相同

每次Erlang显示一个列表时,如果它包含“可显示”的ASCII字符,它将显示字符串而不是数字列表

您可以使用用户格式控制取消显示:

io:format("Number ~w is character ~c\n", [40 40]).

但是,如果我必须使用该列表中的值进行任何进一步的数学计算,会发生什么情况呢?它仍然是一个数字,计算会顺利进行,还是会是一个“(”,因此会给出一个例外,因为我将应用数学计算,就像对“(”进行加法一样@abhishekranjan在shell中,您可以使用
shell:strings(false)
。如果对列表中的第一个元素进行操作,则对数字40进行操作,因此没有问题。单个元素是一个数字,但作为一个整体,列表[40]相当于“(”@abhishekranjan,你只需要习惯这种Erlang的怪异:默认情况下,如果数字对应于“可打印”的ascii字符,那么整数列表将在输出时转换为相应的ascii字符。如果你不喜欢,那么就不要接受默认行为,而是使用
io:format()
使erlang显示数字。我认为这是erlang的一个可怕的功能——但它就是这样的…(续)如果默认情况下erlang总是将整数列表作为整数输出,对我来说似乎更符合逻辑和一致性。然后可以使用
io:format()
更改默认行为并将列表作为字符串输出——但我没有发明erlang!