如何在ruby中为操作符创建别名
我读到alias关键字用于为方法创建别名, 运算符和全局变量 我的问题是如何为操作员创建别名? 我使用的是ruby版本:ruby 1.9.3p551(2014-11-13修订版48407) [i686 linux]如何在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,
下面是一个别名
+
的示例:
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),但我没有证据。@caryswovelandclass
和alias
是关键字,而不是运算符。谢谢,@akuhn。我在想什么?比如说&&
,|
,未定义和已定义?
是非方法运算符的示例。这些确实很有趣。好吧,没有那么多的没有
,它只是映射到代码>可以使用别名。看起来Matz决定不使用&&
和| |
方法,也许是为了避免Smalltak的A或{B}
语法?不知道为什么定义了?
不仅仅是内核上的一个函数,它需要一个字符串,说到这个,我喜欢的是,即使循环
也是Ruby中的一个函数。祝你圣诞快乐@EricDumini不是这个,循环
是使用内核
模块上的module\u函数
定义的。由于内核
包含在对象
中,因此它的所有模块函数在所有对象中都可以作为私有方法使用,因此看起来是全局函数。或许可以问一个问题,这样我可以扩展更多内容?;)谢谢@Eric Duminil上述示例运行良好,但如果我们尝试访问2 my_plus 3,则会出现以下错误:语法错误、意外的消息标识符、预期$end 2 my_plus 3谢谢@Eric Duminil