Czy istnieje lista wszystkich operatorów rubinów, którzy mogą zostać przesłonięci? (Nie te, które nie mogą!)lista operatorów ruby, które można przesłonić/zaimplementować
Odpowiedz
Oto a table of the Ruby operators.
Te, które są metody i przeciążania są:
[ ] [ ]= 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)
Stół był z kilofem książki 2001, ale to ta sama tabela jak w książce Ruby 1.9 kilof - nie ma powodów, by sądzić, że ten zestaw operatorów infiksów kiedykolwiek się zmieni.
Przez "te, które są metodami przeciążonymi" zakładam, że można przeciążać operatorów, którzy są metodami, nie? Ponadto, podczas gdy "czysty" operator nie może być przeciążony, można nadużyć bardziej słów kluczowych słów (np. "Zdefiniowane?", "Nie", "lub", "zacząć") jako nazwy dla nowych metod, bez jakiejkolwiek infiksowej dobroci. – fny
W rzeczywistości! = I! ~ Może być przeciążone/zdefiniowane, nawet jeśli stary kilof mówi, że nie możesz. W 2008 roku pojawiła się skarga na ten temat na liście mailingowej, a Matz skomentował, że Ruby był elastyczny. –
- 1. Lista wszystkich operatorów binarnych w JavaScript
- 2. Które klasy Ruby obsługują .clone?
- 3. Gdzie można znaleźć listę przeciążeń operatorów?
- 4. Jak znaleźć znaczenie operatorów Ruby bez użycia tekstu?
- 5. Lista zdarzeń, które są uruchamiane w DOM
- 6. Elegancko realizacji 'mapy (+1) Lista' w Ruby
- 7. Rozkładana lista uporządkowana z Ruby on Rails
- 8. Dlaczego nie można przeciążać operatorów wewnątrz klasy statycznej?
- 9. Generalizowanie operatorów arytmetycznych
- 10. Nie można użyć Ruby
- 11. Złożoność operatorów porównania
- 12. Zrozumienie zakresu operatorów w C++
- 13. Mechanizm ważności operatorów JavaScriptu
- 14. Zestaw operatorów "w" Pythona
- 15. Pierwszeństwo przeładowanych operatorów obsady
- 16. C++ przeciążanie operatorów konwersji
- 17. Wiele operatorów między argumentami
- 18. bitowe operatorów w PostgreSQL
- 19. Priorytet operatorów:> i ==
- 20. nadrzędne czyste operatorów wirtualnych
- 21. kolejnych operatorów i wsporniki
- 22. Przejrzyste operatory operatorów
- 23. Nie można znaleźć pliku ruby.
- 24. Ruby: Nie można przydzielić pamięci
- 25. Matching z kombinacji niestandardowych/operatorów
- 26. Jak uzyskać listę plików, które zostały "wymagane" w Ruby?
- 27. Lista znaków Unicode, które powinny być filtrowane na wyjściu?
- 28. Lista tylko nazw katalogów, które pasują do wzorca
- 29. Lista wszystkich znaków specjalnych, które muszą zostać zmienione w regex
- 30. Lista plików w R, które NIE pasują do wzorca
** Przeciążenie ** to użycie tej samej nazwy metody dla różnych działań, w których metoda wyróżnia się jedynie podpisem. W rzeczywistości nie jest to możliwe w Ruby. Zastąpienie lub przedefiniowanie to tutaj właściwy termin. –
Dzięki za szczegóły, @platzhirsch. Zmieniłem to pytanie. Dziwne, jak to się zwykle nazywa przeciążenie operatora, nie? – aaaidan
Cóż, jeden, jak ja, zawsze może być wybredny pod względem używania terminów i ich znaczenia :-) W końcu wywodzi się z języków takich jak C++, gdzie może to robi to samo, ale opiera się na innej semantyki. –