私はちょうどここで壁にちょっと走った。 のは、私のコードは次のようなものであるとしましょう:オプション値を返す慣習的な方法は何ですか?
ここdef foo
if bar
123
else
nil
end
end
戻り値はintまたは無記号のいずれかです。 私はoptionals(Rust、F#、Haskellのような言語)のコンセプトに慣れていて、これは本当に私を混乱させています。
私は問題なくあらゆる型の値を返すことができますが、より機能的なバックグラウンドから来て、それはちょうど間違っていると感じています。
錆では、私はOption<T>
を返します。そうすれば、Some
の値が返されたのか、値が返されなかったのかを簡単にテストできます(None
)。ルビー/クリスタルでは、やるべきことのように思われる。
だから、ここで問題です:
私はちょうどそこにそれに対して何の役に立つ返される値とテストされていない、これは、このような場合を扱うの慣用的な方法である場合にはnil
を返す必要がありますが?もしそうでなければ、どうすればよいのですか? nil
を返す
をので、私は私の質問を向上させることができますか? – SplittyDev
私はこの質問でRubyとCrystalを混在させることは妥当だとは思わない - すべてのRubyイディオムがCrystalのイディオムであるとは限らない。 – mgarciaisaia
@mgarciaisaiaそうです。この文脈ではそれほど重要ではなかったので、私は両方にタグを付けました。クリスタルには 'Nil'タイプがあり、Rubyのように感じるので、この質問は両方に当てはまると思います。 – SplittyDev