Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_Refactoring_Ruby 2.0 - Fatal编程技术网

Ruby 这个有一条班轮吗?

Ruby 这个有一条班轮吗?,ruby,refactoring,ruby-2.0,Ruby,Refactoring,Ruby 2.0,假设search很昂贵,有没有办法让它成为一行程序 result = Product.search(query) return result if result 由于搜索费用昂贵,以下内容不适用: return Product.search(query) if Product.search(query) 一种解决方案(Ruby 1.9+): 但我认为这并不能让代码变得清晰。我更喜欢这样写: if result = Product.search(query) return result e

假设
search
很昂贵,有没有办法让它成为一行程序

result = Product.search(query)
return result if result
由于搜索费用昂贵,以下内容不适用:

return Product.search(query) if Product.search(query)
一种解决方案(Ruby 1.9+):

但我认为这并不能让代码变得清晰。我更喜欢这样写:

if result = Product.search(query)
  return result
end
一种解决方案(Ruby 1.9+):

但我认为这并不能让代码变得清晰。我更喜欢这样写:

if result = Product.search(query)
  return result
end
一种可能性:

if result = Product.search(query) then return result end
一种可能性:

if result = Product.search(query) then return result end
为什么不呢

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\u method\u\u获取结果
是另一种搜索方法,或者是在
返回后通常使用的任何方法

为什么不呢

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\u method\u\u to\u get\u result
是一种带有另一个搜索的方法,或者是在
返回后通常使用的任何方法。如果它不依赖于返回的内容,您可以简单地做一行,如下所示:

return Product.search(query)

如果它不依赖于返回的内容,您可以简单地创建一行,如下所示:

return Product.search(query)

由于某种原因,没有考虑选项2。这比我现在看到的还不难看。美好的不过,一条清晰的单行线会更好。红宝石魔法在哪里!?:)由于某种原因,没有考虑选项2。这比我现在看到的还不难看。美好的不过,一条清晰的单行线会更好。红宝石魔法在哪里!?:)
如果result=Product.search(query),然后返回result end
只是好奇,为什么这需要一行呢?@Joe因为这个特殊的方法有很多退出路径,如果看到它们堆叠在一起会很好。如果x,则返回a;如果是y,则返回b;等等@Joe为什么不把这当作一个可能的答案呢?如果(result=Product.search(query))
,你能不能只
返回结果。让它成为一个答案
如果result=Product.search(query),然后返回result end
只是好奇,为什么这需要一行呢?@Joe因为这个特殊的方法有很多退出路径,如果看到它们堆叠在一起会很好。如果x,则返回a;如果是y,则返回b;等等@Joe为什么不把这当作一个可能的答案呢?如果(result=Product.search(query))
,你能不能只
返回结果。让它成为一个答案!