30

重複の可能性:
C#?? Rubyの演算子?

C#と同じことをするRuby演算子はありますか?オペレーター?

?? _ 演算子は、nullでない場合は左側のオペランドを返し、そうでない場合は右側のオペランドを返します。

http://msdn.microsoft.com/en-us/library/ms173224.aspxから

4

3 に答える 3

38

演算子の名前はnull合体演算子です。私がリンクした元のブログ投稿は、言語間のnull合体の違いをカバーしていましたが削除されました。C#とRubyのnull合体の新しい比較はここにあります。

つまり、次のように使用できます||

a_or_b = (a || b)
于 2011-01-09T03:55:02.487 に答える
16

falseの合体を気にしない場合は、||を使用できます。オペレーター:

a = b || c

falseが有効な値である可能性がある場合は、次のように実行できます。

a = b.nil? ? c : b

ここで、bはnilであるかどうかがチェックされ、そうである場合はaにcの値が割り当てられ、そうでない場合はbが割り当てられます。

于 2011-01-09T04:05:07.740 に答える
5

Rubyには、[]または0またはへの通常のnull合体のための特定の機能があることに注意してください0.0

それ以外の

x = y || [] # or...
x = y || 0

...あなたは(NilClassそれらを実装するので)ただすることができます...

x = y.to_a # => [] or ..
x = y.to_i # or .to_f, => 0

これにより、次のような特定の一般的なデザインパターンが作成されます。

(x || []).each do |y|

...もう少し見栄えがします:

x.to_a.each do |y|
于 2011-01-09T04:36:22.457 に答える