我想为 ruby 中的 Numeric
类创建两个一元后缀运算符 !
和 !!
。到目前为止我已经这样定义了它
class Numeric
def !
(1..self).inject(:*)
end
def !!
if self.even?
(2..self).step(2).inject(:*)
else
(1..self).step(2).inject(:*)
end
end
end
但是,这意味着我必须调用 5.!
和 5.!!
。我知道您可以定义一元前缀运算符,例如 +@
和 -@
,但我想知道我是否可以定义一元后缀运算符以便调用 5!
和 5!!
而不是 5.!
和 5.!!
。
最佳答案
没有。首先,Ruby 中没有后缀运算符,因此解析器无法识别。其次,即使我们有后缀运算符,结尾的感叹号也是方法名称的一部分,所以如果您的程序中有 foo!,它会被解释为方法 foo!
,而不是应用了 !
的 foo
。
关于ruby - 我可以重载/创建后缀一元运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733284/