这有一个班轮吗?

时间:2013-08-17 02:21:32

标签: ruby refactoring ruby-2.0

假设search价格昂贵,有没有办法让它成为一个班轮?

result = Product.search(query)
return result if result

由于搜索费用昂贵,以下内容如下:

return Product.search(query) if Product.search(query)

5 个答案:

答案 0 :(得分:3)

result = Product.search(query) and return result

答案 1 :(得分:1)

一个解决方案(Ruby 1.9 +):

Product.search(query).tap {|result| return result if result }

但我不认为这会让代码变得清晰。我宁愿写一些类似的东西:

if result = Product.search(query)
  return result
end

答案 2 :(得分:1)

一种可能性:

if result = Product.search(query) then return result end

答案 3 :(得分:1)

为什么不

return Product.search(query)

在你的例子中

result = Product.search(query)
return result if result

如果结果为false / nil,则不定义,应该返回什么。我的解决方案只是返回这个false / nil。

替代:

return Product.search(query) || 'Sorry no result' 

如果在reutrn之后有替代代码,您可以使用

return Product.search(query) || other_method_to_get_result

other_method_to_get_result是另一种搜索方法 - 或者是return之后通常拥有的任何内容。

答案 4 :(得分:0)

如果它不依赖于返回的内容,那么简单就可以像这样制作一行:

return Product.search(query)