Многие операторы не являются коммутативными.
===
называется "оператором равенства регистра", потому что он вызывается, когда ветвление является регистром.
Приятно и полезно, что:
foo = 42
case foo
when Integer
# branches here
when String
# etc...
end
Было бы не очень полезно, если
foo = Integer
case foo
when 42
# would branch here??
when 666
# etc...
end
Обратите внимание, что в Ruby 1.9 оператор ===
в Proc / lambda будет вызывать этот Proc:
divisible_by_three = ->(x){x % 3 == 0}
divisible_by_three === 42 # => true
Опять же, очень полезно в выражении case
, но не слишком в обратном порядке.