Почему `<< String.reverse (" Halo ") >>` не разрешено в Elixir? - PullRequest
0 голосов
/ 02 мая 2018

Почему это нормально,

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

пока это не нормально в эликсире?

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

1 Ответ

0 голосов
/ 02 мая 2018

Если у вас есть выражение внутри << >>, типом этого выражения считается целое число, представляющее один байт по умолчанию.

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

Если ваше выражение является двоичным (также называемое в Elixir строкой), вам необходимо явно указать тип выражения:

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