Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使这个ruby代码更加地道?_Ruby - Fatal编程技术网

如何使这个ruby代码更加地道?

如何使这个ruby代码更加地道?,ruby,Ruby,因为下面的代码看起来非常过时和丑陋。但在玩过之后,这种方式只会起作用 def duplicated? url found = false current_user.bookmarks.each do |bookmark| if bookmark.url.eql? url found = true end end found end 我删除了找到的本地变量和if语句,如下所示 def duplicated? url current_user.boo

因为下面的代码看起来非常过时和丑陋。但在玩过之后,这种方式只会起作用

def duplicated? url
  found = false
  current_user.bookmarks.each do |bookmark|
    if bookmark.url.eql? url
      found = true
    end
  end
  found
end
我删除了找到的本地变量和if语句,如下所示

def duplicated? url
  current_user.bookmarks.each do |bookmark|
    bookmark.url.eql? url
  end
end
它返回错误的预期结果

你知道如何改进吗?谢谢

我想你需要这里。最好是映射/包含对,因为它不创建临时数组,并且在找到第一个元素时会提前返回

def duplicated? url
  current_user.bookmarks.any?{|b| b.url.eql? url }
end
我想你需要这里。最好是映射/包含对,因为它不创建临时数组,并且在找到第一个元素时会提前返回

def duplicated? url
  current_user.bookmarks.any?{|b| b.url.eql? url }
end

试试看,你为什么贴这个?这是吉恩·路易斯·乔丹诺的答案,我在他没有绘制地图的时候贴了这张照片,当时他的答案是不正确的。此外,我明确地映射,这是更快的,因为映射&::。。。导致演员阵容很快就会成为问题。尽管我怀疑这会很快成为问题。我在实践中从未遇到过这个问题。我从来没有遇到过to_proc的任何问题,对我来说,代码可读性比性能更重要。否则,为什么选择ruby?。所以我想说这纯粹是品味的问题。@Jean-LouisGiordano的确如此,但知道有一个选择还是很好的。你为什么发布这个?这是吉恩·路易斯·乔丹诺的答案,我在他没有绘制地图的时候贴了这张照片,当时他的答案是不正确的。此外,我明确地映射,这是更快的,因为映射&::。。。导致演员阵容很快就会成为问题。尽管我怀疑这会很快成为问题。我在实践中从未遇到过这个问题。我从来没有遇到过to_proc的任何问题,对我来说,代码可读性比性能更重要。否则,为什么选择ruby?。“所以我想说这纯粹是一个品味的问题。”吉恩·路易斯基奥尔达诺说得对,那么知道有选择也是件好事。这很公平。我错过了书签不是url的部分,所以首先想到的是包含。I+1:我不相信你的答案,很公平。我错过了书签不是url的部分,所以首先想到的是包含。I+1:我怀疑你的答案。