Есть ли один вкладыш для этого?

Если предположить, search это дорого, есть ли способ сделать это одним вкладышем?

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

Так как поиск дорог, отсутствует следующее:

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

5 ответов

Решение
result = Product.search(query) and return result

Одна возможность:

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' 

Если у вас есть альтернативный код после возврата, вы можете использовать

return Product.search(query) || other_method_to_get_result

other_method_to_get_result это метод с другим поиском - или что вы обычно имеете после return,

Одно решение (Ruby 1.9+):

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

Но я не думаю, что это делает код понятным. Я бы предпочел написать что-то вроде:

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

Если это не зависит от того, что будет возвращено, вы просто можете сделать одну строку такой:

return Product.search(query)
Другие вопросы по тегам