gpt4 book ai didi

ruby - 使用 AND 作为逻辑门是否被认为是好的做法?

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:57 25 4
gpt4 key购买 nike

我对 ruby​​ 和一般编程都是新手。在阅读“The Well-Grounded Rubyist”一书时,我从 set.rb 标准库中遇到了这个表达式:

enum.nil?并返回

这似乎是一种奇怪(但聪明)的方法:

return unless enum.nil?

这是一种常见的技术吗?还有,为什么要那样做?我错过了什么吗?

这是完整的代码片段:

def initialize(enum = nil, &block)
@hash ||= Hash.new

enum.nil? and return

if block
do_with_enum(enum) { |o| add(block[o]) }
else
merge(enum)
end
end

最佳答案

根据 Avdi Grimm's article在这个主题上,关键字 andor 用于 ruby​​ 中的流控制运算符,而不是 bool 运算符。

enum.nil 是对的吗?和 returnreturn unless enum.nil? 相同。我同意你的看法,在这种情况下使用 unless 会更具可读性。

这种模式在 ruby​​ 中并不不常见,这样做的原因是通过使用 运算符的低优先级来显示流量控制的意图.由于此运算符的优先级较低,因此它允许您添加更多与后续 链接的操作,而不会与可能在同一行代码中完成的其他操作发生冲突。但是,大多数人会考虑使用 if 显式控制条件是控制流程的首选方式。

关于ruby - 使用 AND 作为逻辑门是否被认为是好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068811/

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