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

时间:2018-05-02 03:58:16

标签: elixir

为什么这样,

iex(23)> << "Halo" >>
"Halo"

虽然在Elixir中这不合适?

iex(24)> << String.reverse("Halo") >>
** (ArgumentError) argument error

1 个答案:

答案 0 :(得分:8)

如果在<< >>内有表达式,则表达式的类型假定为一个整数,表示默认为一个字节。

iex(1)> << trunc(65.2) >>
"A"
iex(2)> << trunc(1000.3) >>
<<232>>

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

iex(3)> << String.reverse("Halo")::binary >>
"olaH"