2012-06-22 4 views
19

Я новичок в Ruby, и я увидел этот фрагмент кодарубин

1|2 

и возвращает 3

Что делает оператор | на самом деле? Кажется, я не мог найти документацию. Кроме того, в этом контексте он упоминается как оператор «трубы»? или это называется чем-то еще?

ответ

13

В Ruby "операторы" на самом деле являются вызовы методов. Они определяются каждым классом.

1 и 2 являются Fixnum, и поэтому в 1|2 труба "побитовая".

Ruby doc

Bitwise info

+0

ой, да, я даже не думал о поразрядном или. когда я увидел 1 | 2, и результат был 3, моя мысль сразу перешла к дополнению, так что это меня смутило. –

23

Это оператор побитового и они работают непосредственно с двоичным представлением значения.

| среднее ИЛИ. Позвольте мне показать вам, как это работает.

1|2 = 3 , что происходит под капюшонами является:

1 = 0001 
2 = 0010 
-------- 
3 = 0011 <- result 

другой пример:

10|2 = 10 сейчас в двоичном виде:

10 = 1010 
2 = 0010 
-------- 
10 = 1010 <- result 
+1

+1 большое описание! – JGutierrezC