簡體   English   中英

如何提高紅寶石代碼的慣用語?

[英]How to improve this ruby code more idiomatic?

由於下面的代碼看起來很老舊又丑陋。 但是在以這種方式玩耍之后才起作用。

def duplicated? url
  found = false
  current_user.bookmarks.each do |bookmark|
    if bookmark.url.eql? url
      found = true
    end
  end
  found
end

我消除了找到的本地var和類似的if語句

def duplicated? url
  current_user.bookmarks.each do |bookmark|
    bookmark.url.eql? url
  end
end

並且它返回錯誤的預期結果。

知道如何改進嗎? 謝謝

我認為您需要Enumerable#any? 這里。 應該首選map / include對,因為它不會創建臨時數組,並且會在找到的第一個元素上早返回。

def duplicated? url
  current_user.bookmarks.any?{|b| b.url.eql? url }
end
def duplicated?(url)
   current_user.bookmarks.map{|bm| bm.url}.include?(url)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM