Эликсир - проблема разделения строк, когда я вижу результат в консоли - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в Elixir, и я пытаюсь построить заданное значение валюты с плавающей запятой в параметре функции и преобразовать в объект с {целое число, десятичное число). Когда я преобразую значение с плавающей запятой в строковое объявление, разделим его .. возвращаемые значения странные

Я вызываю функцию через iex, но вместо этого моя функция split возвращает ["4", "50"], она возвращает 450 ..

Итак, я попытался напечатайте пример foo bar и он вместо этого вернул foobar ["foo", "bar"]

Вот код:

def amountFormatter(amount) do
    stringAmount = Float.to_string(amount)
    splittedAmount = String.split(stringAmount, ".")
    IO.puts(String.split("foo bar", " "))
    integer = Enum.at(splittedAmount, 0)
    decimal = Enum.at(splittedAmount, 1) || 0
    amountFormatted = %{
      integer: Float.parse(integer),
      decimal: Float.parse(decimal)
    }
    amountFormatted
  end

enter image description here

1 Ответ

3 голосов
/ 20 апреля 2020

Когда вы передаете список в IO.puts/2, список обрабатывается как chardata . По сути, он объединяет все в списке.

iex> IO.puts(["foo", "bar"])
foobar # printed
:ok # returned

Для проверки значения при запуске кода лучше использовать IO.inspect/2:

iex> IO.inspect(["foo", "bar"])
["foo", "bar"] # printed
["foo", "bar"] # returned
...