Elixir 1.6.0上的Bitstring可收集抛出错误

时间:2018-01-19 21:59:51

标签: elixir

由于某种原因,此代码

for i <- 7..0, into: <<>>, do: if i in [0, 1], do: <<1::1>>, else: <<0::1>>

在Elixir 1.6.0上失败但在1.5.3上失败

1.6.0

iex(1)> for i <- 7..0, into: <<>>, do: if i in [0, 1], do: <<1::1>>, else: <<0::1>>
** (ArgumentError) argument error
   :erlang.iolist_to_binary([[[[[[[["" | <<0::size(1)>>] | <<0::size(1)>>] | <<0::size(1)>>] | <<0::size(1)>>] | <<0::size(1)>>] | <<0::size(1)>>] | <<1::size(1)>>] | <<1::size(1)>>])

1.5.3

iex(1)> for i <- 7..0, into: <<>>, do: if i in [0, 1], do: <<1::1>>, else: <<0::1>>
<<3>>

我查看了更改日志,但没有看到任何与此相关的更改。我已经查看了一些代码库,但没有看到任何突出的东西。

(更新)

创建了问题https://github.com/elixir-lang/elixir/issues/7234。我会留意两者。

1 个答案:

答案 0 :(得分:1)

这已在elixir的1.6.1版本中修复。