如何在ruby中为操作符创建别名

如何在ruby中为操作符创建别名,ruby,Ruby,我读到alias关键字用于为方法创建别名, 运算符和全局变量 我的问题是如何为操作员创建别名? 我使用的是ruby版本:ruby 1.9.3p551(2014-11-13修订版48407) [i686 linux] 下面是一个别名+的示例: class Fixnum alias_method :my_plus, :+ end puts 2.my_plus(3) #=> 5 注: 2+3的正确完整语法是2.+(3),因为+只是为Fixnums定义的方法 它也可以被称为2+3或2+3,

我读到alias关键字用于为方法创建别名, 运算符和全局变量

我的问题是如何为操作员创建别名?

我使用的是ruby版本:ruby 1.9.3p551(2014-11-13修订版48407) [i686 linux]


下面是一个别名
+
的示例:

class Fixnum
  alias_method :my_plus, :+
end

puts 2.my_plus(3) #=> 5
注:

2+3
的正确完整语法是
2.+(3)
,因为
+
只是为Fixnums定义的方法


它也可以被称为
2+3
2+3
,这只是语法上的糖分。据我所知,不可能在新方法中添加语法糖。

您的问题应该是“是否可以为运算符创建别名?”。大多数操作符都是作为方法实现的(例如),因此您显然可以为这些方法创建别名。与问题相关的只是其他问题,如
class
alias
。你不能为这些代码创建别名(如果不重新编译Ruby),但我没有证据。@caryswoveland
class
alias
是关键字,而不是运算符。谢谢,@akuhn。我在想什么?比如说
&&
|
未定义和
已定义?
是非方法运算符的示例。这些确实很有趣。好吧,没有那么多的
没有
,它只是映射到
可以使用别名。看起来Matz决定不使用
&&
| |
方法,也许是为了避免Smalltak的
A或{B}
语法?不知道为什么定义了
不仅仅是
内核上的一个函数,它需要一个字符串,说到这个,我喜欢的是,即使
循环
也是Ruby中的一个函数。祝你圣诞快乐@EricDumini不是这个,
循环
是使用
内核
模块上的
module\u函数
定义的。由于
内核
包含在
对象
中,因此它的所有模块函数在所有对象中都可以作为私有方法使用,因此看起来是全局函数。或许可以问一个问题,这样我可以扩展更多内容?;)谢谢@Eric Duminil上述示例运行良好,但如果我们尝试访问2 my_plus 3,则会出现以下错误:语法错误、意外的消息标识符、预期$end 2 my_plus 3谢谢@Eric Duminil