如果没有响应,请尝试回调该函数。这更多是面向对象的吗?
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)
答案 0 :(得分:0)
模块名称必须大写。
只需替换第一行
defmodule ask do
使用
defmodule Ask do
关于递归调用函数:这一点与对象定向完全没有关系,在很多情况下,这种用法在Elixir中很常见。但是,您可以像在同一个模块中一样,只需调用getAlt()
而不用模块名(Alt.getAlt()
)开头即可。
作为旁注:Elixir中通常不使用骆驼保护套。通常应该将您的函数称为get_alt()
。