2017-02-16 4 views
0

В моем классе Triangle ниже у меня есть метод initialize, который принимает три аргумента.Неверное количество аргументов при инициализации

class Triangle 
    attr_accessor :side1, :side2, :side3 

    def initalize(one, two, three) 
     @side1 = one 
     @side2 = two 
     @side3 = three 
    end 
end 

Когда я создаю новый класс и инициализировать его с тремя аргументами,

one = Triangle.new(1,2,3) 
puts one.side1 
puts one.side2 
puts one.side3 

Я получаю эту ошибку:

"lib/triangle.rb:21:in `initialize': wrong number of arguments (given 3, expected 0) (ArgumentError)". 

Что это?

ответ

3

У вас есть опечатка:

def initalize # typo 
def initialize # correct 

BTW, менее ручной способ обработки сценария в kind является:

def kind 
    :scalene if [@side1, @side2, @side3].uniq.length == 3 
end 
+0

Ого, спасибо! – Edson

+0

Сладкий, не знал про «уник», спасибо. – Edson

+0

@coreyward, если вы не возражаете, я спрашиваю, что же такое ': scalene' здесь' def kind' метод? Я просто искал ее, думая, что это рубиновый метод, а это не так? Трудно смутить то, что здесь есть ... по математике, это означает 3 неравные стороны ... но здесь это рецепт? – user273072545345

Смежные вопросы