[英]NoMethodError, undefined method in Ruby
我是Ruby的新手,正在從事有關類和繼承的練習。
我們應該能夠調用一個更大的比? 每個形狀的方法。 此方法應評估兩個形狀,並根據一個形狀的面積大於另一個形狀的面積返回真或假。 換句話說,“大於”? 如果接收對象大於參數對象,則方法應返回true:
我在創建large_than時遇到問題嗎? 方法。 我不知道如何從其他形狀中獲取面積並將其與接收對象的面積進行比較。
class Shape
attr_accessor :color, :area
def initialize(color = nil)
@color = color || 'Red'
end
def larger_than?(object_area)
if self.class.area > object_area
"true"
else
"false"
end
end
end
class Rectangle < Shape
attr_accessor :width, :height
def initialize(width, height, color = nil)
@width, @height = width, height
super(color) # this calls Shape#initialize
end
def area
width * height
end
end
class Square < Rectangle
def initialize(side, color = nil)
super(side, side, color) # calls `Rectangle#initialize`
end
end
class Circle < Shape
attr_accessor :radius
def initialize(radius, color = nil)
@radius = radius
super(color) # this calls Shape#initialize
end
def area
Math::PI * (radius*radius)
end
end
NoMethodError
undefined method `larger_than?' for #<B:0x007fdf3047d5a8 @color="Red">
如果您提供了調用此比較的實際代碼,這將很有幫助,但是基於此代碼,您試圖將Fixnum類的值(本質上是一個整數)與NilClass(基本上什么都沒有)進行比較。
我假設第4行是這個
if shape.area > self.class.area
我假設當您調用此線形時.area包含某種數量的Fixnum類,在將其與Class方法進行比較時會以Instance方法的形式進行計算
所以兩個問題
如果您可以提供一段實際調用這些類的代碼或解釋您要執行的操作-我將能夠為您提供進一步的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.