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