我對Ruby和編程都很陌生。雖然我的工作方式通過的「基礎紮實Rubyist」的書,我碰到這個表達來自於set.rb標準庫:將AND用作邏輯門是否被認爲是良好的做法?
enum.nil? and return
這似乎是一個奇怪的(但聰明)的方式來做到這一點:
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
我以前沒見過,但當然是有效的。爲了可讀性,我更願意'返回除非..'。你可能會對這個問題提出反對意見,因爲它徵求意見,這對SO來說是不合理的。順便說一下,在這種情況下'&&'通常用來代替'和'。 –
其次是可讀性問題。 ''和'是非常罕見的,它並沒有真正註冊爲條件語句乍一看'如果返回enum.nil?'或'return,除非枚舉'會。 @CarySwoveland - 我相信'和'(一個控制流操作符)在這個上下文中實際上比'&&'(布爾操作符)更適合**。 –
@Zach,我同意你和'vs'和'&&',儘管許多Rubiest從不使用'和';只需'&&'根據需要帶括號。我上面的陳述表明,使用'&&'是「更好」,這是不正確的。 –