如何解决如何清除if-else +返回值
在Ruby中编码时,我经常写这样的东西
def someopp(param)
r_val = nil
begin
r_val = do_something(param)
rescue Some::Error => e
r_val = {}
end
r_val
end
我不喜欢它的外观。声明返回变量实际上并没有做任何事情,然后再次使用仅包含var名称的行来返回它。麻烦我觉得,在Ruby中,必须有办法使它更加干净漂亮。这里有语法糖的建议吗?
解决方法
def someopp(param)
do_something(param)
rescue Some::Error
{}
end
或
def someopp(param)
do_something(param) rescue {}
end
但不建议您使用嵌入式救援!
,如果您确实非常频繁地执行此操作(调用可能会引发异常并回落到某些默认值的外部依赖项),则可以进一步推广:
def rescuing(*exceptions,with:)
yield
rescue *exceptions
with
end
value = rescuing(ZeroDivisionError,with: Float::INFINITY) { 3 / 0 }
# => Infinity
如果可以的话,如果可以避免出现例外,那还是更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。