Pet*_*ter 1 erlang elixir erlang-otp iex
我一直在学习Elixir一段时间,但今天我遇到了一些令我困惑的事情.
我做了这个过滤功能:
thingy = for a <- ["may", "lay", "45", "67", "bay", "34"], do: Integer.parse(a)
for {n, _} <- thingy, do: n
output: '-C"'
Run Code Online (Sandbox Code Playgroud)
完全意外的输出,但下面的版本'工作'
parseds = for i <- [ "10", "hot dogs", "20" ], do: Integer.parse(i)
for {n, _} <- parseds, do: n
output: [10, 20]
Run Code Online (Sandbox Code Playgroud)
但是,如果我将数字更改为45和65,我会得到'-A'结果.
这只是基础二进制函数允许我使用我喜欢的数字吗?
这是因为Elix与Erlang一样,内部没有String类型.单引号字符串表示为字符列表,这些字符串在处理Erlang库时通常使用.给Elixir列表时[45, 67, 34],它会将其显示为ASCII字符46,67和34的列表 ; 其是-,C,和".
如果列表中至少有一个数字不代表可打印字符,则会看到数字列表.因为10没有映射到可打印字符,所以在第二个示例中,您会看到10和20.
重要的是要注意,您创建的列表仍然在内部表示,[45, 67, 34]因此您执行的任何列表操作都将完全按照您对数字的预期运行.