2012-06-22 12 views
19

Sono nuovo di rubino, e ho visto questo frammento di codicerubino tubo operatore

1|2 

e restituisce 3

Che cosa fa l'operatore | effettivamente fare? Non riesco a trovare alcuna documentazione su di esso. Inoltre, in questo contesto è indicato come l'operatore "pipe"? o si chiama qualcos'altro?

risposta

13

In Ruby, "operatori" sono in realtà chiamate di metodo. Sono definiti da ogni classe.

1 e 2 sono Fixnum e quindi in pipe 1|2 "bit" o "bit".

Ruby doc

Bitwise info

+0

oops, sì, non ho nemmeno pensato a bit a bit o. quando ho visto 1 | 2 e il risultato era 3, il mio pensiero è andato immediatamente all'aggiunta, quindi questo è ciò che mi ha confuso. –

23

Questo è un operatore binario ed agiscono direttamente con la rappresentazione binaria del valore.

| media OR. Lascia che ti mostri come funziona.

1|2 = 3 cosa succede sotto le cappe è:

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

un altro esempio:

10|2 = 10 ora in binario:

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

+1 ottima spiegazione! – JGutierrezC