由于某种原因,此代码
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。我会留意两者。