Есть две важные вещи, которые нужно понять.Во-первых, Ruby читает эту строку следующим образом:
return(UserStubPresenter.new(@object.recipient)) if @options[:shallow].to_bool
И сначала он оценивает условие if
.Это означает - как Zeitnot уже писал - если @options[:shallow].to_bool
верно, то UserStubPresenter.new(@object.recipient)
вычисляется и возвращается.
Секунды, если вы не вернетесь явно, то Ruby вернет возвращаемое значение последней оцененнойзаявление.Ваш пример - более короткая версия
if @options[:shallow].to_bool
return UserStubPresenter.new @object.recipient
else
end
Последнее выражение - это пустой путь else, поэтому ваша эта строка вернет nil
- явный return nil
не требуется.
А если предположить, что эта строка является последней строкой метода, тогда вам вовсе не нужен return
.