add(方法)已创建,但错误表明不是

时间:2014-12-01 16:08:47

标签: ruby instance-variables instance-methods

我在Ruby的初级水平,我正在进行的练习要求我用各种数学方法创建一个Calculator类_。

这是我运行的代码,错误。我在课程中给出的提示@calc,但我不知道插入它的位置或原因。

 class Calculator
   attr_accessor :x, :y

   def initialize(x,y)
     @x, @y = x, y
   end

   def add()
     x + y
   end

   def subtract()   # **or should it be listed as y,x?**
     y - x
   end

   def multiply()
     x * y
   end

   def divide()
     @x.to_f / @y.to_f
   end

 end
 => nil

 calc = Calculator.new(5 , 2)
 => #<Calculator:0x00000101067258 @x=5, @y=2>

NoMethodError: undefined method `add' for #<Calculator:0x00000101067258 @x=5, @y=2>
  from (irb):32

2 个答案:

答案 0 :(得分:1)

您有两个错误。

首先,在这一行的字符串(在它之外)之后有一个点:

"Performs basic mathematical operations".

应该是:

"Performs basic mathematical operations."

另一方面,您的代码中还有一个end。在这些行的末尾:

      def divide(x,y)
        @x.to_f / @y.to_f
      end
   end
end

应该是:

  def divide(x,y)
    @x.to_f / @y.to_f
  end
end

答案 1 :(得分:0)

因为没有任何错误。只有问题是使用适当的属性调用方法 还有一件事情在@x和a之间有很多区别。 add的方法定义是错误的。

def add() 
  x + y 
end

而不是重写此方法,如

def add()
  @x + @y
end

希望对你有所帮助。