检查是否设置了ArgParse可选参数(在Julia中)

bec*_*cko 1 julia argparse.jl

这基本上是同一个问题:检查是否设置了argparse可选参数,但在Julia中,使用Julia的ArgParse模块.

给定一个带有值的参数,我想知道它的值是否给定.

Ima*_*ngo 5

简而言之,一旦解析了参数,就可以检查参数是否设置为parsed_args["argname"] == nothing(true如果设置参数,则返回参数).

找到娄自包含的例子(悦目修改例1ArgParse.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位置参数的关键字,这将强制用户引入它.