0

Ruby 中的运算符是否属于特定的类?据我所知,运算符是由类根据它们要执行的操作重新定义的标记。例如,Numeric 类为数字运算定义了 + 运算符,类似地,String 类为字符串连接定义了它。因此,基于此,如果我尝试这样做:

    +.is_a ? (Numeric)

它返回假。我对这个问题的解释正确吗?

抱歉,这是我作业中的实际问题。+ 属于哪个类,您如何检查它?

4

3 回答 3

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 中真正的运算符示例,您不能使用其中一些“名称”定义自己的方法:

  • 赋值运算符:=
  • 动作和赋值:+=, -=, *=, /=, %=,**=
  • 位运算符:&, |, ^, ~, <<,>>
  • 逻辑运算符:and, or, &&, ||, !,not
  • 三元运算符:? :
  • 范围运算符:..,...
  • 点和双冒号:.,::

还有一个特殊的运算符defined?。它实际上看起来像一个方法,但它是一个运算符。不过,您可以定义自己的defined?方法。

于 2012-09-18T10:24:03.287 回答
1

不,它不属于特定类,因为任何类都可以有自己的+方法。您尝试做的只是检查+程序类的运算符。要在 Ruby 中看到一切都是一个类,只需运行这个脚本

#!/usr/bin/ruby

puts self.inspect
于 2012-09-18T07:52:43.820 回答
1

您所说的“属于班级”的含义非常令人困惑。从您的代码片段看来,您的意思是“类实例”。

如果这就是你的意思,那么答案是:这个问题没有意义。运算符不是对象。因此它们不可能是类的实例。

于 2012-09-18T07:53:43.760 回答