В Ruby кажется, что с помощью
можно получить много справочной информации о coerce ().
def coerce(something)
[self, something]
end
это когда
3 + rational
Требуется
, Fixnum 3
не знает, как обрабатывать добавление Rational, поэтому он просит Rational # coerce о помощи, вызываяational.coerce (3), и этот метод экземпляра coerce сообщит вызывающему: *
# I know how to handle rational + something, so I will return you the following:
[self, something]
# so that now you can invoke + on me, and I will deal with Fixnum to get an answer
Так что, если большинство операторов могут использовать этот метод, но не тогда, когда это (a - b)! = (B - a) ситуация? Может ли coerce () знать, какой это оператор, и просто обрабатывать эти особые случаи, просто используя простое [self, что-то] для обработки всех других случаев, когда (a op b) == (b op a)? (оп оператор).