Есть ли один вкладыш для этого?
Если предположить, search
это дорого, есть ли способ сделать это одним вкладышем?
result = Product.search(query)
return result if result
Так как поиск дорог, отсутствует следующее:
return Product.search(query) if Product.search(query)
5 ответов
Решение
Одна возможность:
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)