我可以使用数学符号调用(调用)ruby阶乘方法吗?

我可以使用数学符号调用(调用)ruby阶乘方法吗?,ruby,operator-overloading,overriding,factorial,Ruby,Operator Overloading,Overriding,Factorial,我有一个函数给我一个数的阶乘 class Integer def fact (1..self).reduce(:*) || 1 end end 我想知道如何使用数学符号来调用这个方法 阶乘“N!” 我试过了 class Integer def ! (1..self).reduce(:*) || 1 end end 还有其他一些东西,但它们都不起作用。您只能重载已经存在的运算符。没有包含的ruby运算符用作后缀 然而,Ruby确实有使用的逻辑not操作符作为前缀

我有一个函数给我一个数的阶乘

class Integer
  def fact
    (1..self).reduce(:*) || 1
  end
end
我想知道如何使用数学符号来调用这个方法 阶乘“N!”

我试过了

class Integer
  def !
    (1..self).reduce(:*) || 1
  end
end

还有其他一些东西,但它们都不起作用。

您只能重载已经存在的运算符。没有包含
的ruby运算符用作后缀

然而,Ruby确实有使用
的逻辑
not
操作符作为前缀。事实上,这就是你所超载的

根据您的代码:

!4 # => 24
当然,这是不可取的,但对于过载的工作原理有点教育意义

或者,这更接近常规:

4.! # => 24