我可以使用数学符号调用(调用)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