为什么Elixir中不允许使用`<< String.reverse("Halo")>>`?

And*_*ree 2 elixir

为什么这样,

iex(23)> << "Halo" >>
"Halo"
Run Code Online (Sandbox Code Playgroud)

而在Elixir中这不行吗?

iex(24)> << String.reverse("Halo") >>
** (ArgumentError) argument error
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 8

当你有一个表达式时<< >>,该表达式的类型被假定为一个整数,表示默认的一个字节.

iex(1)> << trunc(65.2) >>
"A"
iex(2)> << trunc(1000.3) >>
<<232>>
Run Code Online (Sandbox Code Playgroud)

如果表达式是二进制文件(在Elixir中也称为String),则需要明确指定表达式的类型:

iex(3)> << String.reverse("Halo")::binary >>
"olaH"
Run Code Online (Sandbox Code Playgroud)