Ruby 中的运算符是否属于特定的类?据我所知,运算符是由类根据它们要执行的操作重新定义的标记。例如,Numeric 类为数字运算定义了 + 运算符,类似地,String 类为字符串连接定义了它。因此,基于此,如果我尝试这样做:
+.is_a ? (Numeric)
它返回假。我对这个问题的解释正确吗?
抱歉,这是我作业中的实际问题。+ 属于哪个类,您如何检查它?
Ruby 中的运算符是否属于特定的类?据我所知,运算符是由类根据它们要执行的操作重新定义的标记。例如,Numeric 类为数字运算定义了 + 运算符,类似地,String 类为字符串连接定义了它。因此,基于此,如果我尝试这样做:
+.is_a ? (Numeric)
它返回假。我对这个问题的解释正确吗?
抱歉,这是我作业中的实际问题。+ 属于哪个类,您如何检查它?
大多数其他编程语言中的运算符只是 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 中真正的运算符示例,您不能使用其中一些“名称”定义自己的方法:
=
+=
, -=
, *=
, /=
, %=
,**=
&
, |
, ^
, ~
, <<
,>>
and
, or
, &&
, ||
, !
,not
? :
..
,...
.
,::
还有一个特殊的运算符defined?
。它实际上看起来像一个方法,但它是一个运算符。不过,您可以定义自己的defined?
方法。
不,它不属于特定类,因为任何类都可以有自己的+
方法。您尝试做的只是检查+
程序类的运算符。要在 Ruby 中看到一切都是一个类,只需运行这个脚本
#!/usr/bin/ruby
puts self.inspect
您所说的“属于班级”的含义非常令人困惑。从您的代码片段看来,您的意思是“类实例”。
如果这就是你的意思,那么答案是:这个问题没有意义。运算符不是对象。因此它们不可能是类的实例。