我是Ruby的新手。我的一项练习是删除Arrowhead编程并引发异常。我一直在undefined method for validate_region_and_shape
。
def self.classify(region, shape)
# Alternative for raising exception within classify method
#raise Error_Message unless CLASSIFICATIONS.include? (region)
#raise Error_Message unless CLASSIFICATIONS[region].include? (shape)
if validate_region_and_shape(region, shape)
places = CLASSIFICATIONS[region][shape]
"You have a(n) '#{places}'"
end
end
def validate_region_and_shape(region, shape)
raise Error_Message if valid_region?
raise Error_Message if valid_shape?
end
def valid_region?
CLASSIFICATIONS.include?(region)
end
def valid_shape?
CLASSIFICATIONS[region].include?(shape)
end
end
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
在定义validate_region_and_shape?
编辑:
如果您需要摆脱异常,那么您可以尝试类似
的内容def validate_region_and_shape(region, shape)
CLASSIFICATIONS.include?(region) && CLASSIFICATIONS[region].include?(shape)
end
def classify(region, shape)
# Alternative for raising exception within classify method
#raise Error_Message unless CLASSIFICATIONS.include? (region)
#raise Error_Message unless CLASSIFICATIONS[region].include? (shape)
if validate_region_and_shape?(region, shape)
arrowhead = CLASSIFICATIONS[region][shape]
"You have a(n) '#{arrowhead}' arrowhead. Probably priceless."
else
raise Error_Message
end
end
答案 1 :(得分:0)
你在这里发生了一些事情。例如,您为validate_region_and_shape
方法使用了两个不同的名称。你用一个问号来调用它,但它是在没有问号的情况下定义的。所以,要么改变这个:
if validate_region_and_shape?(r...
为:
if validate_region_and_shape(r...
或改变:
def validate_region_and_shape(r...
为:
def validate_region_and_shape?(r...
您还将其定义为实例方法(无self
),但是从类方法中调用它。由于没有实例,因此没有具有该名称的实例方法。所以,你需要把它变成一个像第一个类的方法......
def self.validate_region_and_shape(region, shape)
raise ...