Ska*_*osh 0 erlang elixir-mix elixir
Elixir 由 Erlang OTP 提供支持,它使用 Mix 作为构建工具来创建和运行应用程序。
我现在正在作为初学者学习长生不老药
我可以通过指定mix new sample从命令行创建 mix 应用程序, 并在其中编写一些代码来学习 elixir 和 mix 的基础知识。
可以使用命令mix run sample.exs运行exs和ex文件
我正在尝试编写代码来获取特定类型的数字,例如特定范围 (100000,20000) 之间的质数
我想将这两个数字 (100000,200000) 作为混合运行命令的参数,如mix run sample.exs 100000,200000并获得给定范围内的结果。
注意 - 我不想使用 escript 构建和可执行文件,只需要使用 mix run 命令而不是mix run -e
如何获取 args 作为 exs 文件中的输入值?
非常感谢
为了获取传递给程序的参数,您需要使用System.argv(). 例如,给定以下 exs 脚本:
args = System.argv()
|> IO.inspect()
Run Code Online (Sandbox Code Playgroud)
并运行elixir so_exs.exs input_1 input_2(请注意,我这里没有 Mix 项目,因此我没有使用mix run),您将得到以下结果。该args变量现在包含传递给程序的所有参数的列表:
["input_1", "input_2"]
Run Code Online (Sandbox Code Playgroud)
虽然System.argv/0在琐碎的情况下有些工作,但我们通常OptionParser用于或多或少复杂的选项处理。
["--start", "0", "--end", "42"]
|> OptionParser.parse(
strict: [start: :integer, end: :integer]
)
|> IO.inspect()
#? {[start: 0, end: 42], [], []}
Run Code Online (Sandbox Code Playgroud)
要使用这些值:
{args, _, _} =
OptionParser.parse(
["--start", "0", "--end", "42"],
strict: [start: :integer, end: :integer]
)
Enum.each(args[:start]..args[:end], &IO.inspect/1)
Run Code Online (Sandbox Code Playgroud)