Определение функции и обратный вызов, если нет ответа - PullRequest
0 голосов
/ 07 февраля 2019

Попытка перезвонить функции, если нет ответа.Это больше объектно-ориентированная вещь?

defmodule ask do
 def getAlt(altitudeSet) do

  altitudeSet = IO.gets"altitudeSet"

  case altitudeSet do
    altitudeSet when altitudeSet in ["Y\n","y\n"]->
      IO.puts "You selcted #{altitudeSet}"
    altitudeSet when altitudeSet in ["N\n","n\n"]->
      IO.puts "You selected #{altitudeSet}"
    _->
     ask.getAlt()
   end

 end
end

и я получаю это:

warning: variable "ask" does not exist and is being expanded to "ask()", please use parentheses to remove the ambiguity or change the variable name newGlennHopperScript.exs:9 ** (CompileError) newGlennHopperScript.exs:9: undefined function ask/0
(stdlib) lists.erl:1354: :lists.mapfoldl/3
(elixir) expanding macro: Kernel.defmodule/2
newGlennHopperScript.exs:9: (file)

1 Ответ

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

Имя модуля должно быть написано заглавными буквами.

Просто замените первую строку

defmodule ask do

на

defmodule Ask do

О рекурсивном вызове функций: Это невообще обязательно связано с объектной ориентацией и есть много случаев, когда такое использование распространено в Elixir.Однако вы можете просто позвонить getAlt() вместо того, чтобы ставить перед ним имя модуля (Alt.getAlt()), как вы делаете это в том же модуле.

В качестве примечания: случай с верблюдом обычно не используетсяв эликсире.Ваша функция обычно должна называться get_alt().

...