2010-07-26 35 views
24

Có danh sách nào ở tất cả các toán tử ruby ​​có thể bị ghi đè không? (Không phải những cái không thể!)danh sách các toán tử ruby ​​có thể bị ghi đè/triển khai

+0

** Quá tải ** là việc sử dụng cùng một tên phương thức cho các hành động khác nhau, trong đó phương thức chỉ có thể phân biệt bằng chữ ký của nó. Thực ra điều đó là không thể trong Ruby. Ghi đè hoặc xác định lại là thuật ngữ thích hợp ở đây. –

+0

Cảm ơn các chi tiết, @platzhirsch. Tôi đã chỉnh sửa câu hỏi. Lạ như thế nào nó thường được gọi là quá tải nhà điều hành sau đó, không? – aaaidan

+0

Vâng, giống như tôi, luôn luôn có thể cầu kỳ liên quan đến việc sử dụng các thuật ngữ và ý nghĩa của chúng :-) Sau tất cả nó có nguồn gốc từ các ngôn ngữ như C++, nơi nó có thể làm như vậy, nhưng dựa trên ngữ nghĩa khác nhau. –

Trả lời

31

Đây là a table of the Ruby operators.

Những người được phương pháp và overloadable là:

[ ] [ ]= Element reference, element set 
** Exponentiation 
! ~ + -  Not, complement, unary plus and minus (method names for the last two are [email protected] and [email protected]) 
*/% Multiply, divide, and modulo 
+ -  Plus and minus 
>> << Right and left shift 
& Bitwise `and' 
^ |  Bitwise exclusive `or' and regular `or' 
<= < > >= Comparison operators 
<=> == === != =~ !~  Equality and pattern match operators (!= and !~ may not be defined as methods) 

Bảng là từ Pickaxe cuốn sách năm 2001, nhưng đó là cùng một bảng như trong cuốn sách của Ruby 1,9 Pickaxe - không có lý do để tin rằng bộ này của các toán tử infix sẽ thay đổi.

+0

Bởi "những cái là phương pháp và quá tải", tôi giả sử bạn có nghĩa là người ta chỉ có thể quá tải các nhà khai thác được phương pháp, không? Ngoài ra, trong khi các toán tử "thuần" không thể bị quá tải, người ta có thể lạm dụng các từ khóa giống từ giống hơn (ví dụ 'được định nghĩa?', 'Không',' hoặc', 'bắt đầu') làm tên cho các phương thức mới mà không có bất kỳ sự tốt đẹp nào. – fny

+1

Thực ra,! = Và! ~ Có thể bị quá tải/xác định, mặc dù cái cuốc cũ nói rằng bạn không thể. Trở lại năm 2008 đã có một khiếu nại về nó trên danh sách gửi thư và Matz nhận xét rằng Ruby là linh hoạt. –

Các vấn đề liên quan