我想创建一个运行此方法的一元运算符:
def @*
self **= 2
end
我有一个平方很重要的项目,我不想写' ** = 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