覆盖==运算符无法正常工作并退出程序

时间:2014-09-26 21:10:05

标签: ruby

我正在尝试覆盖显示here==操作。我创建了==

class Point
  def ==(g)
    p'Never reaches here'
    if @x==g.grid
      true
    else
      false
    end
  end
end

我这样称呼方法:

def home? (gridPoint,point)
  if point==gridPoint
    do something
  end

当我运行应用程序时,永远不会打印"Never reaches here",应用程序会跳过剩下的代码并退出。

如果我在gridPoint之前打印Point==,我可以看到它们都是积分。为什么程序似乎从未输入==方法?

我试过了point.==(gridPoint)。这也不起作用,也无法尝试清理代码。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:-2)

我想我有一些建议为什么你的确切代码不起作用

  1. 类名应始终为常量。这意味着你必须把第一个字母大写!
  2. 您需要将==方法声明为类方法而不是实例方法。
  3. 与#2一起,您需要使用类名而不是来自对象实例
  4. 来调用它

    class Point

          attr_accessor :x
    
          def initialize(string)
            @x == string
          end
    
           def self.== (g)
              p'Never reaches here'
              @x==(g) ? true : false
           end
    
          def home? (gridpoint, point)
            Point == (gridpoint)
          end
        end
    
        n = Point.new("Schylar")
        puts n.home?("Schylar","Schylar")