Я пытаюсь получить доступ к переменной size
в каждом из полиморфных методов.Когда я запускаю код, я получаю следующую ошибку:
examples.rb:181:in `calculate_area': undefined method `/' for nil:NilClass (NoMethodError)
from examples.rb:175:in `calculate_area'
from examples.rb:199:in `<main>'
Я пробовал множество хаков, но не нашел хорошего решения.Вот код ниже.
class Shape
attr_accessor :size
def calculate_area(shape_type)
shape_type.calculate_area
end
end
class Circle < Shape
def calculate_area
return Math::PI * (size / 2) * (size / 2)
end
end
class Square < Shape
def calculate_area
return size * size
end
end
class Triangle < Shape
def calculate_area
return 0.5 * (size * 2) * size
end
end
shape = Shape.new
shape.size = 5
puts shape.calculate_area(Circle.new)
puts shape.calculate_area(Square.new)
puts shape.calculate_area(Triangle.new)