这个 IF 语句有可能是 1 行代码,而不是 5 行吗?
Is it possible for this IF statement to be 1 line of code, instead of 5?
我有以下逻辑来确定执行哪个 eval
查询..
docker_version=%x[docker version -f {{.Server.Version}}].gsub(/[^0-9,.]/, "")
if docker_version < '17.06'
query="eval $(aws ecr get-login --region us-west-2)"
else
query="eval $(aws ecr get-login --no-include-email --region us-west-2)"
end
sh "#{query}"
if
语句是否可以是 1
行代码而不是 5
?
使用三元运算符:
query = docker_version < '17.06' ?
"eval $(aws ecr get-login --region us-west-2)" :
"eval $(aws ecr get-login --no-include-email --region us-west-2)"
使用字符串连接我们可以进一步整理:
query = "eval $(aws ecr get-login " +
(docker_version < '17.06' ? "--region us-west-2)" : "--no-include-email --region us-west-2)")
字符串连接绝对是个好主意,但它会造成一些混淆,尤其是对于初学者。因此,为了更好的可读性,您可以使用如下所示的字符串插值,
query = "eval $(aws ecr get-login #{docker_version < '17.06' ? '--region us-west-2' : '--no-include-email --region us-west-2'})"
我想你也可以将公共选项区域移到三元运算符之外,
query = "eval $(aws ecr get-login --region us-west-2 #{docker_version < '17.06' ? '' : '--no-include-email'})"
Is it possible for the if
statement to be 1
line of code instead of 5
?
Ruby 中永远不需要换行符,您可以随时删除它们:
if docker_version < '17.06' then query="eval $(aws ecr get-login --region us-west-2)" else query="eval $(aws ecr get-login --no-include-email --region us-west-2)" end
就我个人而言,我不理解这种对 "writing everything in 1 line" 的痴迷,但你要求它,它就在这里。我根本不觉得它更具可读性。
我有以下逻辑来确定执行哪个 eval
查询..
docker_version=%x[docker version -f {{.Server.Version}}].gsub(/[^0-9,.]/, "")
if docker_version < '17.06'
query="eval $(aws ecr get-login --region us-west-2)"
else
query="eval $(aws ecr get-login --no-include-email --region us-west-2)"
end
sh "#{query}"
if
语句是否可以是 1
行代码而不是 5
?
使用三元运算符:
query = docker_version < '17.06' ?
"eval $(aws ecr get-login --region us-west-2)" :
"eval $(aws ecr get-login --no-include-email --region us-west-2)"
使用字符串连接我们可以进一步整理:
query = "eval $(aws ecr get-login " +
(docker_version < '17.06' ? "--region us-west-2)" : "--no-include-email --region us-west-2)")
字符串连接绝对是个好主意,但它会造成一些混淆,尤其是对于初学者。因此,为了更好的可读性,您可以使用如下所示的字符串插值,
query = "eval $(aws ecr get-login #{docker_version < '17.06' ? '--region us-west-2' : '--no-include-email --region us-west-2'})"
我想你也可以将公共选项区域移到三元运算符之外,
query = "eval $(aws ecr get-login --region us-west-2 #{docker_version < '17.06' ? '' : '--no-include-email'})"
Is it possible for the
if
statement to be1
line of code instead of5
?
Ruby 中永远不需要换行符,您可以随时删除它们:
if docker_version < '17.06' then query="eval $(aws ecr get-login --region us-west-2)" else query="eval $(aws ecr get-login --no-include-email --region us-west-2)" end
就我个人而言,我不理解这种对 "writing everything in 1 line" 的痴迷,但你要求它,它就在这里。我根本不觉得它更具可读性。