Ответ 1
Имена методов для четырех унарных операторов +
, -
, ~
и !
: [email protected]
, [email protected]
, [email protected]
и [email protected]
. Итак, смешные поисковые определения методов:
def [email protected]; _show _test :_pass, :_fail end
def [email protected]; _show _test :_fail, :_pass end
def [email protected]; _show _pend; end
def [email protected]; _show _desc; end
просто определяют перегрузки для этих четырех унарных операторов. Затем TestRocket заносится в класс Proc с помощью Proc.send :include, TestRocket
.
Это:
-> { Die.new(2) }
- просто определение лямбда и другой способ записи lambda { Die.new(2) }
. Затем, с помощью TestRocket, исправленного в Proc, мы можем сказать следующее:
+-> { Die.new(2) }
# + lambda { Die.new(2) }
и он будет запускать этот метод:
def [email protected]; _show _test :_pass, :_fail end
как метод экземпляра на этой лямбда.
Похоже на злоупотребление унарной операцией перегрузкой, чтобы "изобрести" что-то похожее на новые операторы -->
, ~->
,...