在学习它方面,我对Elixir非常陌生,我来自没有编程背景。
有没有更好的方法可以编写函数来在Elixir中执行计算器?另外如何在不运行elixir add.exs的情况下从命令行单独调用这些?
defmodule Numbers do
defmodule Addition do
def add(a, b) do
a + b
end
end
defmodule Subtract do
def sub(a, b) do
a - b
end
end
defmodule Divide do
def div(a, b) do
a / b
end
end
defmodule Multiply do
def mul(a, b) do
a * b
end
end
end
IO.puts Numbers.Addition.add(1, 2)
IO.puts Numbers.Subtract.sub(1, 2)
IO.puts Numbers.Divide.div(1, 2)
IO.puts Numbers.Multiply.mul(1, 2)
输出
CPUs-MacBook-Air:lib cpu$ elixir add.exs
3
-1
0.5
2
答案 0 :(得分:4)
Numbers
模块中。并将其称为Numbers.add(1, 2)
iex add.exs
运行,以便能够手动调用这些方法。Code.eval_string("2+3*5") |> elem(0)
答案 1 :(得分:3)
对于这样一个简单的应用程序,你不应该有真正的嵌套模块。在编写代码之前要做的一件好事就是要考虑您需要的不同内容以及它们之间的相互关系。你有一个模块编号,你想要加,减,除和乘。这些是对数字进行的操作吗?因此,将它们作为公共函数(毕竟是操作)提供给Numbers模块。
.exs文件是Elixir脚本。这意味着当你加载它们时,它们将执行你在文件中调用的函数(不是定义,而是像那里的IO.puts那样)。如果要手动与模块交互,请使用.ex文件。
Meteor.http.put('http://192.168.178.98:8080/test', {
content: "1",
headers: {
"content-type": "text/plain"
}
}, function(err, res) {
});
这可以是您的计算器程序。现在您需要将其调用到控制台(也称为REPL或Read Eval Print Loop)。
defmodule Numbers do
def add(a, b) do
a + b
end
def sub(a, b) do
a - b
end
def div(a, b) do
a / b
end
def mul(a, b) do
a * b
end
end
并手动调用函数
iex c "numbers.ex"
你可以随意使用它。别名单词表示您可以为模块名称创建“快捷方式”,在这种情况下,我将其更改为“Calc”。如果你的模块位于许多目录中,例如“ProjectName.SomeOtherName.YourModuleName”,那么你也可以使用它,并且只需使用“YourModuleName”来调用函数。