Пользовательские операторы? Если вы не хотите взломать C parser (или парсер Java для JRuby или ...). OTOH, операторы в основном представляют собой синтаксический сахар для методов, и вам разрешено определять все методы, которые вы хотите.
Поскольку многие операторы (but not all) - это скрытые методы, вы можете обезвредить реализации существующих операторов столько, сколько захотите. Вам нужно будет отследить все числовые классы, которые определяют свою собственную реализацию **
, и исправить все из них; обратите внимание, что вам нужно будет покрыть Rational
, Bignum
, Complex
, ... от ядра, а также от таких вещей, как BigDecimal из стандартной библиотеки. Я бы настоятельно рекомендовал против этого, вы просто настроились на боль и страдания; например, что бы вы сделали с BigDecimal#**
, когда результат не поместился в Float
? Как насчет Complex#**
? Если вам нужно Float
s для чего-то, сделайте его явным с вызовом to_f
.
«Поскольку операторы - это просто маскирующие методы», ну, некоторые операторы *, но не все, а некоторые иногда (например, '='). [Таблица 18.4 в Пикаксе] (http://phrogz.net/ProgrammingRuby/language.html#table_18.4) является хорошей ссылкой. –
@AndrewMarshall: Это хороший момент. Я думаю, что я мысленно разделял операторов на «операторов» и «языковые функции», даже не осознавая этого. –