Я занимаюсь Ruby (Ruby 1.9.3, IRB 0.9.6 (09.06.30)), и я пытаюсь разработать сложный класс чисел. У меня есть методы initialize
и to_s
. Теперь я пытаюсь перегрузить четыре арифметических оператора.Ruby access instance variable другого объекта
То, что я должен был следующий:
def +(other)
return ComplexNumber.new(@real + [email protected], @imag + [email protected])
end
, но по какой-то причине не нравится [email protected]
; он сообщает
syntax error: unexpected tIVAR
и указывает на запятую после [email protected]
.
Итак, я изменил его:
def get_values
return [@real, @imag]
end
def +(other)
other_values = other.get_values
return ComplexNumber.new(@real + other_values[0], @imag + other_values[1])
end
Хотя это работает, у меня есть ощущение, что это не правильный способ сделать это. Я действительно не хочу раскрывать метод get_values
; нет ли способа доступа к переменной другого экземпляра того же класса?
Рубин имеет сложный класс из коробки: 'путы«0.3-0.5i» .to_c.class # => Complex' – steenslag