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

时间:2014-05-08 23:03:27

标签: ruby operator-overloading override factorial

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

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

我想知道如何使用数学符号来调用此方法  因子和#34; N'#34;!

我已经尝试了

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

和其他事情,但没有一个工作。

1 个答案:

答案 0 :(得分:2)

您只能重载已存在的运算符。没有ruby运算符,其中!用作后缀。

但是,Ruby确实拥有使用not作为前缀的逻辑!运算符。这实际上就是你所超载的。

根据您的代码:

!4 # => 24

当然,这是不可取的,但对于过载如何工作有点教育。

或者,这更接近惯例:

4.! # => 24