Ruby中的运算符属于特定类吗?根据我的知识,运算符是由类根据它们要执行的操作重新定义的标记。例如,Numeric类为数值运算定义+运算符,类似地,String类为字符串连接定义它。基于此,如果我尝试这样做:
+.is_a ? (Numeric)
返回false。我对这个问题的解释是否正确?
很抱歉所有的困惑,这是我的作业中的实际问题。+所属的课程属于哪个,你如何检查?
答案 0 :(得分:2)
其他编程语言中的大多数操作符只是Ruby中的一种方法。
+
是一种非操作员的方法。你可以参考它:
1.method(:+)
#=> #<Method: Fixnum#+>
"".method(:+)
#=> #<Method: String#+>
Fixnum
和String
是实现+
方法的许多类之一。您可以定义自己的类似运算符的方法:
class MyClass
attr_accessor :number, :string
def +(other)
self.number += other.number
self.string += other.string
self
end
end
Ruby中的true运算符示例,您无法使用其中一些“名称”定义自己的方法:
=
+=
,-=
,*=
,/=
,%=
,**=
&
,|
,^
,~
,<<
,>>
and
,or
,&&
,||
,!
,not
? :
..
,...
.
,::
还有一个特殊的运算符defined?
。它实际上看起来像一个方法,但它是一个运算符。不过,您可以定义自己的defined?
方法。
答案 1 :(得分:1)
没有。它不属于特殊类,因为任何类都可以拥有它自己的+
方法。您尝试做的只是检查程序类的+
运算符。要在Ruby中看到所有内容都是一个类,只需运行此脚本
#!/usr/bin/ruby
puts self.inspect
答案 2 :(得分:1)
你所说的“属于阶级”是很混乱的。从您的代码片段看,您的意思是“类的实例”。
如果这就是你的意思,那么答案是:这个问题没有意义。运算符不是对象。因此,它们不可能是类的实例。