我一直在做一些“猴子补丁”(对不起,我是超人补丁),就像这样,将以下代码和更多代码添加到我"#{Rails.root}/initializers/"
文件夹中的文件中:
module RGeo
module Geographic
class ProjectedPointImpl
def to_s
coords = self.as_text.split("(").last.split(")").first.split(" ")
"#{coords.last}, #{coords.first}"
end# of to_s
def google_link
url = "https://maps.google.com/maps?hl=en&q=#{self.to_s}"
end
end# of ProjectedPointImpl class
end# of Geographic module
end
我最终意识到_Point_
我想在两个不同的实例上使用这些方法(两者都是具有相同格式的字符串,即众所周知的文本(WKT)),并将上述两种方法的精确副本添加到某个RGeo::Geos::CAPIPointImpl
课堂空间。
然后,我以我年轻、没有经验的方式,在思考了 DRY(不要重复自己)原则之后,开始创建一个特设类,我认为我可能能够从这两个类中继承
class Arghhh
def to_s
coords = self.as_text.split("(").last.split(")").first.split(" ")
"#{coords.last}, #{coords.first}"
end# of to_s
def google_link
url = "https://maps.google.com/maps?hl=en&q=#{self.to_s}"
end
end
并告诉我的类从它继承,即:ProjectedPointImpl < Arghhh
当我停下来然后尝试重新加载我的 rails 控制台时,ruby 立即用这个错误回应了我:
`<module:Geos>': superclass mismatch for class CAPIPointImpl (TypeError)
...
我认为我试图让 CAPIPointImpl (在这种情况下)从另一个类而不是其父类继承的天真也非常明确地突出了我在这个主题上的知识差距
我可以使用哪些方法将额外的共享方法实际移植到来自其他不同父母的两个班级?ruby 是否允许这些类型的抽象异常?