gpt4 book ai didi

ruby - 如何在 Ruby 中编写具有多个条件的保护子句?

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:43 25 4
gpt4 key购买 nike

针对此代码运行 Rubocop 后,我得到了

Use a guard clause instead of wrapping the code inside a conditional expression.

所以据我所知,如果不满足条件,“保护条款”将退出该方法,因此我们不必浪费时间去处理额外的条件,如果我的理解不正确,请纠正我.

我的问题是如何在多个条件下使用 guard 语句

def auth_creds
if %w(test1 qa demo ci).include? ENV['ENV']
{ key: 'key1', secret: 'secret1' }
elsif ENV['ENV'] == 'live'
{ key: 'key2', secret: 'secret2' }
else
fail 'Unable to set key/secret'
end
end

谢谢

最佳答案

您的代码段不是“保护条款”的有效示例。没什么好防备的。它只是选择数据。它看起来像 case/whenif 链也很好。

def auth_creds
case ENV['ENV']
when 'test1', 'qa', 'demo', 'ci'
{ key: 'key1', secret: 'secret1' }
when 'live'
{ key: 'key2', secret: 'secret2' }
else
fail 'Unable to set key/secret'
end
end

当方法的整个主体都包含在条件语句中时,使用保护子句(或者我称之为提前返回)。

def process_project
if project
# do stuff
end
end

除非有项目,否则该方法不会执行任何操作。因此,如果我们减少此处的嵌套,代码的可读性会更高。

def process_project
return unless project

# do stuff with project
end

同样,并非代码中的每个 if 都可以/应该转换为这种形式。仅在适当的地方。

关于ruby - 如何在 Ruby 中编写具有多个条件的保护子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com