复制/继承Ruby Matrix类core / std lib

问题描述

| 我试图在Ruby中扩展现有的Singleton类,例如Matrix类。 我的第一个快捷,肮脏的解决方案是猴子补丁(重新打开类并扩展了功能)。 但是我认为,猴子修补程序通常不好,特别是如果有人试图覆盖核心类的基本方法,例如String,Integer等。 下一步是找出如何获得具有新名称(如MatrixExt)的Matrix类的真实硬拷贝,该名称表现为独立的单例。
MatrixExt = Matrix
没有工作,因为它导致:
MatrixExt.scalar(2,0)
=> Matrix[[0,0],[0,0]]
所以我只为同一个单身人士获得多个名字。不,我想要的。
clone
dup
方法的结果相同。 同样,类继承将不起作用:
class MatrixExt < Matrix
  # patches ...
end

MatrixExt.scalar(2,0]]
这是最令人困惑的部分,因为在自定义类中,可以获取继承的类。 (因此,为什么core / std lib类工作不同?) 我当前的解决方案是拥有一个带有扩展名的模块,然后在初始化后显式使用
.extend
,例如:
m = Matrix.scalar(2,0).extend(MatrixExtModule)
现在还可以,但是我的问题是: 是否有其他解决方案?(是时)如何执行? (不,当然,复制matrix.rb不是一个好方法。 我做错了或我以错误的方式思考的地方? 在此先感谢您提供任何解决方案和/或思想上的帮助!     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)