Почему это нормально,
iex(23)> << "Halo" >>
"Halo"
а в Эликсире это не нормально?
iex(24)> << String.reverse("Halo") >>
** (ArgumentError) argument error
Когда у вас есть выражение внутри << >>
, предполагается, что тип этого выражения является целым числом, представляющим один байт по умолчанию.
iex(1)> << trunc(65.2) >>
"A"
iex(2)> << trunc(1000.3) >>
<<232>>
Если ваше выражение является двоичным (также называемым String в Elixir), вам необходимо явно указать тип выражения:
iex(3)> << String.reverse("Halo")::binary >>
"olaH"