1

我正在学习 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'字符串?

4

2 回答 2

4

它在 elixir 中没有错误,因为方法应该像在 erlang中一样[]返回新列表。

但是对于 unicode 编号介于 32 和 255 之间的符号,它会以 Unicode(默认设置)返回它们的表示。

iex(25)> [31]
[31]
iex(26)> [32]
' '
iex(27)> [255]
'ÿ'
iex(28)> [256]
[256]

但是,当您开始使用 erlang 时,+pc unicode它会解码更多符号

 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].
 "Юникод" 
于 2013-09-09T07:08:34.427 回答
1

入门指南中的“2.3 字符串(二进制)和字符列表(列表)”可能与此主题相关。

http://elixir-lang.org/getting_started/2.html

于 2013-09-09T15:35:09.127 回答