初始化变量时与 Ruby 和 JavaScript 或 Bash 等效



有时我在JavaScript中看到:

a||=1

这意味着 - 据我所知 - 如果未定义"a"或 null,则它被初始化为值 1,否则什么都不会发生。我在 Ruby 脚本中做同样的事情,例如,当命令行参数未传递时:

gamma=ARGV[0]||"1.0"

然后变量 gamma 从 ARGV[0] 获取其值,假设它不是 nil,传递了一个值,否则它将是 "1.0"。

这是一个很好的简写:

if ARGV[0]==nil then
  gamma="1.0"
else 
  gamma=ARGV[0]
end

甚至:

gamma=ARGV[0]==nil ? "1.0" : ARGV[0]

我想在 ruby 脚本中使用类似的指令,但它没有按预期工作,因为不存在 nil 或 null 值,所以表达式:

$0||"1.0"

始终给出 $0 的值,即使它是空字符串 "。是否可以在 bash 脚本中使用类似的速记语法?

bash中,您可以使用"分配默认值"参数展开运算符。

: ${a:=1.0}


${parameter:=word} 如果parameter未设置或为 null,则将word的扩展分配给parameter

: 命令是一个 no-op,使用它只是为了我们可以在其参数列表中执行参数扩展。

相关内容

  • 没有找到相关文章

最新更新