以下を考慮してください。
response = responses.to_a.first
これはresponses
、またはの最初の要素を返しnil
ます。そして、条件文を扱うためnil
としてfalse
、我々は書くことができます。
response = responses.to_a.first
if response
# do something ('happy path')
else
# do something else
end
どちらがより読みやすいですか:
if response.nil?
# do something else
else
# do something ('happy path')
end
if (object)
パターンは、Rubyのコードでは非常に一般的です。また、次のようにリファクタリングにうまくつながります:
if response = responses.to_a.first
do_something_with(response)
else
# response is equal to nil
end
また、Rubyメソッドはnil
デフォルトで返されることも覚えておいてください。そう:
def initial_response
if @condition
@responses.to_a.first
else
nil
end
end
次のように簡略化できます。
def initial_response
if @condition
@responses.to_a.first
end
end
したがって、さらにリファクタリングできます。
if response = initial_response
do_something_with(response)
else
# response is equal to nil
end
帰国nil
は必ずしも最良のアイデアとは限らない、と主張することができますnil
。なぜなら、それはあらゆる場所をチェックすることを意味するからです。しかし、それは別の魚のやかんです。オブジェクトの「存在または不在」のテストが頻繁に要求されることを考えると、オブジェクトの真実性はRubyの有用な側面ですが、この言語の初心者にとっては驚くべきことです。