2

この演算子を使用するデバッグ中のコードがいくつかありますが、なぜ使用されるのかわかりません。

オブジェクトを配列に追加しているようです。それがすべてだった場合、エンジニアが単純に「<<」演算子を使用しなかった理由がわかりません。違いはなんですか?

ありがとう!

4

2 に答える 2

3

ターゲットを変更するとは限りません<<。重要なのは結果かもしれません。動作に関して使用される実際のタイプについては、API を参照してください。

整数のビット シフトには副作用はありません (割り当て/使用されない限り、計算は破棄されます)。

a = 1
a << 2
a # => 1
a <<= 2
a # => 4

しかし<<、配列に副作用があります(そして、操作の副作用の性質を隠す無駄な割り当て1<<=を実行するだけです):

b = [1]
b << 2
b # => [1,2]

1まれに、ゲッターとセッターの両方を呼び出し、セッターにロジックが含まれている可能性があるため、副作用のある操作にアクセサーを使用するのが「賢い」場合があります。ただし、ここでは理由から「良い」ではなく「賢い」という言葉を使用しています:)obj.prop <<= val

于 2012-10-11T21:28:24.127 に答える
3

http://www.tutorialspoint.com/ruby/ruby_operators.htm

ビット単位の左シフト操作と代入が 1 つのように見えます。

x <<= 2

と同じです

x = x << 2
于 2012-10-11T21:24:41.933 に答える