Эликсир: неиспользуемое имя переменной, хотя она использовалась - PullRequest
0 голосов
/ 08 февраля 2019
 def build_map(script_str) do
    script_str = String.replace_leading(script_str ")", "")
    script_str = String.replace(script_str, "false", "111")
    script_str = String.replace(script_str, "null", "111")
    script_str = String.replace(script_str, "\'", "111")
    String.replace(script_str, ")", "")
end

открытие интерактивной оболочки с помощью команды mix iex -S mix выдает следующую ошибку:

Compiling 1 file (.ex)
warning: variable "script_str" is unused
  lib/moviematch.ex:21


== Compilation error in file lib/moviematch.ex ==
** (CompileError) lib/moviematch.ex:22: undefined function script_str/2
    (stdlib) lists.erl:1338: :lists.foreach/2
    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6

Я новичок в elixir, может кто-нибудь помочь мне в этом.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Отправка этого в качестве ответа для форматирования. Пожалуйста, не голосуйте.

Все тело функции не является идиоматическим кодом Elixir.Вот как мы пишем это в Elixir, используя Kernel.|>/2 aka pipe operator :

def build_map(script_str) do
  script_str
  |> String.replace_leading(")", "")
  |> String.replace("false", "111")
  |> String.replace("null", "111")
  |> String.replace("\'", "111")
  |> String.replace(")", "")
end

Таким образом, у вас меньше шансов совершить ошибку, подобную тойВы сделали.

0 голосов
/ 08 февраля 2019

У вас есть ошибка в первой строке вашей функции.Elixir пытается выполнить script_str ")", но не может найти функцию script_str и громко жалуется на это.

Заменить

script_str = String.replace_leading(script_str ")", "")

этим

script_str = String.replace_leading(script_str, ")", "")

Также см. другой ответ с переписанным функциональным кодом, чтобы сделать его более понятным для Elixir.

...