这基本上是同一个问题:检查是否设置了argparse可选参数,但在Julia中,使用Julia的ArgParse模块.
给定一个带有值的参数,我想知道它的值是否给定.
简而言之,一旦解析了参数,就可以检查参数是否设置为parsed_args["argname"] == nothing(true如果未设置参数,则返回参数).
找到娄自包含的例子(悦目修改例1从ArgParse.jl)以2个参数,打印真,如果参数是不设置(只需更换==用!=了相反的行为):
using ArgParse
function main(args)
# initialize the settings (the description is for the help screen)
s = ArgParseSettings(description = "Example usage")
@add_arg_table s begin
"--opt1" # an option (will take an argument)
"arg1" # a positional argument
end
parsed_args = parse_args(s) # the result is a Dict{String,Any}
println(parsed_args["arg1"] == nothing)
println(parsed_args["opt1"] == nothing)
end
main(ARGS)
Run Code Online (Sandbox Code Playgroud)
示例命令行调用(假设上面存储test.jl):
>>> julia test.jl
true
true
>>> julia test.jl 5
false
true
>>> julia test.jl 5 --opt1=6
false
false
>>> julia test.jl --opt1=6
true
false
Run Code Online (Sandbox Code Playgroud)
但是,有时为参数定义默认值而不是检查它是否已设置可能更合适.可以通过将default关键字添加到参数来完成:
@add_arg_table s begin
"--opt1"
"--opt2", "-o"
arg_type = Int
default = 0
"arg1"
required = true
end
Run Code Online (Sandbox Code Playgroud)
以及required位置参数的关键字,这将强制用户引入它.