2012-06-22 16 views
19

Tôi mới đến ruby, và tôi thấy mã này đoạn mãruby ​​

1|2 

và nó sẽ trả về 3

gì các nhà điều hành | thực sự làm gì? Tôi không thể tìm thấy bất kỳ tài liệu nào về nó. Ngoài ra, trong bối cảnh này, nó được gọi là toán tử "đường ống"? hay nó được gọi là cái gì khác?

Trả lời

13

Trong Ruby, "toán tử" thực sự là cuộc gọi phương thức. Chúng được xác định bởi mỗi lớp.

1 và 2 là Fixnum và do đó trong ống 1|2 có "bitwise hoặc".

Ruby doc

Bitwise info

+0

oops, vâng, tôi thậm chí không nghĩ về bitwise hoặc. khi tôi nhìn thấy 1 | 2 và kết quả là 3, suy nghĩ của tôi ngay lập tức đã được bổ sung vì vậy đó là những gì làm tôi bối rối về nó. –

23

Đây là một nhà điều hành Bitwise và họ làm việc trực tiếp với các đại diện nhị phân của giá trị.

| có nghĩa là HOẶC. Hãy để tôi chỉ cho bạn cách nó hoạt động.

1|2 = 3 những gì xảy ra dưới mũ trùm là:

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

một ví dụ khác:

10|2 = 10 tại trong hệ nhị phân:

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

+1 giải thích tuyệt vời! – JGutierrezC