是否有可能在Ruby中创建一元运算符?

时间:2018-01-08 07:32:12

标签: ruby operators

我想创建一个运行此方法的一元运算符:

def @*
    self **= 2
end

我有一个平方很重要的项目,我不想写' ** = 2'每一次。我已经广泛搜索过,但还没有找到答案。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

那不会奏效。 Ruby支持一元methods,但只支持+-~!

此外,虽然您可以编写一个方形数字的方法:

class Numeric
  def square
    self ** 2
  end
end

3.square #=> 9

你不能编写一个修改数字的方法 - 数字是不可变的。

答案 1 :(得分:0)

回答所述问题:

  

我有一个平方很重要的项目,我不想每次都写**=2

牺牲Integer#~

class Integer
  def ~@
    self ** 2
  end
end

虽然您仍然无法改变Numeric实例,但您现在可以在计算中使用它:

5 + ~4
#⇒ 21