Ответ 1
Ruby 2.1.0, 2.0, 1.9, 1.8
Оператор - это токен, который представляет операцию (например, добавление или сравнение) для одного или нескольких операндов. Операнды - это выражения, и операторы позволяют нам объединить эти выражения операнда в более крупные выражения. (Ссылка)
N= arity= количество операндов, на которых работает оператор. (Ссылка)
A= ассоциативность= порядок оценки, когда один и тот же оператор (или операторы с одинаковым приоритетом) последовательно появляются в выражении. Значение L
означает, что выражения оцениваются слева направо. Значение R
означает, что выражения оцениваются справа налево. И значение N
означает, что оператор неассоциативен и не может использоваться несколько раз в выражении без круглых скобок, чтобы указать порядок оценки. (Ссылка)
M= определимость= Ruby реализует ряд своих операторов как методы, позволяя классам определять новые значения для этих операторов. Столбец M
указывает, какие операторы являются методами. Операторы, отмеченные Y
, реализуются с помощью методов и могут быть переопределены, а операторы, помеченные знаком N
, могут отсутствовать. (Ссылка)
Следующая таблица упорядочена в соответствии с нисходящим приоритетом (наивысший приоритет в верхней части).
N A M Operator(s) Description
- - - ----------- -----------
1 R Y ! ~ + boolean NOT, bitwise complement, unary plus
(unary plus may be redefined from Ruby 1.9 with [email protected])
2 R Y ** exponentiation
1 R Y - unary minus (redefine with [email protected])
2 L Y * / % multiplication, division, modulo (remainder)
2 L Y + - addition (or concatenation), subtraction
2 L Y << >> bitwise shift-left (or append), bitwise shift-right
2 L Y & bitwise AND
2 L Y | ^ bitwise OR, bitwise XOR (exclusive OR)
2 L Y < <= >= > ordering
2 N Y == === != =~ !~ <=> equality, pattern matching, comparison
(!= and !~ may not be redefined prior to Ruby 1.9)
2 L N && boolean AND
2 L N || boolean OR
2 N N .. ... range creation (inclusive and exclusive)
and boolean flip-flops
3 R N ? : ternary if-then-else (conditional)
2 L N rescue exception-handling modifier
2 R N = assignment
2 R N **= *= /= %= += -= assignment
2 R N <<= >>= assignment
2 R N &&= &= ||= |= ^= assignment
1 N N defined? test variable definition and type
1 R N not boolean NOT (low precedence)
2 L N and or boolean AND, boolean OR (low precedence)
2 N N if unless while until conditional and loop modifiers