我正在学习Elixir,我从PragProg的书“Programming Elixir”中得到的一个例子就是:
iex(25)> (1..10) |> Enum.map(&(&1*&1)) |> Enum.filter(&(&1 < 20))
[1, 4, 9, 16]
输入代码后,我尝试了一下,我写道:
iex(26)> (1..10) |> Enum.map(&(&1*&1)) |> Enum.filter(&(&1 > 20))
[25, 36, 49, 64, 81, 100]
很好,这是预期的结果。现在我写这样的话:
iex(27)> (1..10) |> Enum.map(&(&1*&1)) |> Enum.filter(&(&1 > 40))
'1@Qd'
为什么我会收到这个奇怪的'1@Qd'
字符串?
答案 0 :(得分:4)
它不是elixir中的错误,因为方法[]
应该像在erlang中一样返回新的list。
但是对于具有32和255之间的unicode编号的符号,它将以Unicode(默认设置)返回其表示。
iex(25)> [31]
[31]
iex(26)> [32]
' '
iex(27)> [255]
'ÿ'
iex(28)> [256]
[256]
但是当您使用+pc unicode
启动erlang时,它会解码更多symbols:
erl +pc unicode
Erlang R16B (erts-5.10.1) [source] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.10.1 (abort with ^G)
1> [1024].
"Ѐ"
2> [1070,1085,1080,1082,1086,1076].
"Юникод"
答案 1 :(得分:1)
“入门指南中的2.3字符串(二进制文件)和字符列表(列表)”可能与此主题相关。