抓住朱莉娅的空ARGS

时间:2018-08-19 18:25:41

标签: julia

我正在尝试使用以下命令检查是否从命令行发送了任何ARGS

@show ARGS
localARGS = if findfirst(ARGS) == nothing ["arg1", "arg2"] else ARGS end 

但是出现以下错误:

  

错误:LoadError:语法:“ [[]

”中不允许“ [”前的空格

所以,我将其重新编码为:

localARGS = if findfirst(ARGS) == nothing
                    ["arg1", "arg2"]
            else
                    ARGS
            end 

我遇到一个错误,即:

  

错误:LoadError:TypeError:布尔值中使用的非布尔值(字符串)   上下文

我也尝试过:

name = (ARGS[1] == nothing ? "arg1" : ARGS[1])

但是出现以下错误:

  

错误:LoadError:BoundsError:尝试访问0元素   索引为[1]的数组{String,1}

并尝试:

name = isdefined(:ARGS) ? ARGS[1] : "arg1"

但以以下错误结束:

  

错误:LoadError:ArgumentError:已定义:参数太少   (预计2)

2 个答案:

答案 0 :(得分:1)

您可以简单地检查ARGS变量的长度:

localARGS =
    if length(ARGS) == 0
        ["arg1", "arg2"]
    else
        ARGS
    end
@show localARGS

在Julia 0.6.4和1.0.0中进行了测试。

答案 1 :(得分:1)

我使用compound-expressions找到了这种解决方案,对我来说看起来更干净:

localARGS = ( if isempty(ARGS) ; ["arg1", "arg2"] ; else ARGS ; end )

对于单个ARGS,ternary operator可以用作:

name = isempty(ARGS) ? "arg1" : ARGS[1]