2014-12-01 3 views
0

Создан (метод), но ошибка говорит о том, что это не

Я нахожусь на уровне начинающего в 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 
+1

Не могли бы вы очистить формат фрагмента кода? – zuba

+2

Удалите '.' после строки в' self.description' – rohit89

+0

> извините за форматирование ... не знакомы с md – Tishpr

ответ

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 
0

Как нет какой-либо ошибки. Только проблема заключается в вызове метода с соответствующими атрибутами. Еще одна особенность - разница между @x и a. определение методов для add неверно.

def add() 
    x + y 
end 

вместо этого переписать эти методы как

def add() 
    @x + @y 
end 

надеюсь, это поможет вам.

+0

Не могли бы вы рассказать нам, был ли наш ответ решен вашей проблемой или нет. – VKatz