代码之家  ›  专栏  ›  技术社区  ›  Hasan A Yousef Michael Benjamin

抓住茱莉亚的空话

  •  1
  • Hasan A Yousef Michael Benjamin  · 技术社区  · 6 年前

    ARGS 已从命令行发送,使用以下命令:

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

    但出现了以下错误:

    错误:LoadError:语法:“nothing[”中不允许“[”前面有空格

    所以,我把它重新编码为:

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

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

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

    但出现了以下错误:

    索引[1]处的数组{String,1}

    并尝试:

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

    错误:LoadError:ArgumentError:isdefined:参数太少 (预期2)

    2 回复  |  直到 6 年前
        1
  •  1
  •   Hasan A Yousef Michael Benjamin    6 年前

    我发现这个解决方案使用 compound-expressions ,看起来更干净:

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

    ternary operator 可用作:

    name = isempty(ARGS) ? "arg1" : ARGS[1]
    
        2
  •  1
  •   Hasan A Yousef Michael Benjamin    6 年前

    你可以简单地检查 ARGS 变量:

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