【发布时间】:2018-11-01 17:07:39
【问题描述】:
我正在通过comprehension docs 寻找长生不老药,我对这个 sn-p 感到困惑:
for <<c <- " hello world ">>, c != ?\s, into: "", do: <<c>>
具体来说,这部分:<<c <- " hello world ">>
这到底是什么? 据我了解,c <- " hello world " 是一个生成器,<<>> 是二进制语法。那么,把它放在一起它是一个生成器的二进制文件?很奇怪,好吧,但也许这类似于 python 的列表理解,例如[x for x in (1..3)]
但是,它看起来不是这样,因为该语句不能独立存在:
iex(2)> <<c <- " hello world ">>
** (CompileError) iex:2: undefined function <-/2
(elixir) src/elixir_bitstring.erl:65: :elixir_bitstring.expand_expr/4
(elixir) src/elixir_bitstring.erl:32: :elixir_bitstring.expand/6
(elixir) src/elixir_bitstring.erl:12: :elixir_bitstring.expand/4
如果代码不能独立存在,那么它在理解中如何工作?它在理解之外的其他任何地方都有效吗?
【问题讨论】: