参照クラスを動的に拡張するときの継承を制御する方法
-
26-10-2019 - |
質問
WebCrawler/WebScraperセッティングで、基本参照クラスを動的に拡張したいと思います URL
それぞれのホスト/ドメインに特定の方法を作成できるようにするため。明確にするために、 動的に 私は何かを意味します」新しいドメインに遭遇すると、クラス定義を自動的に生成します (例:クラス URL_something.com
クラスから継承します URL
)".
扱います、唯一の問題は私のクラスであるということです WebPage
フィールドの価値が期待されます url
クラスになる URL
. 。クラスのオブジェクトを受け入れます URL_something.com
これがクラスから継承するように URL
, 、しかし、実際にオブジェクトをクラスのインスタンスに変えます URL
. 。だから私はそれが実際にクラスのものであるという情報を失います URL_something.com
.
その重要な情報を失うのを防ぐ方法について何か考えがありますか?
コードの例
setRefClass(Class="URL", fields=list(x="character"))
setRefClass(Class="WebPage", fields=list(url="URL"))
obj <- new("WebPage", url=new("URL", x="http://www.something.com/home/index.html"))
obj$url
# Method would recognize that there is no class 'URL_something.com'
# yet and thus create it:
setRefClass(Class="URL_something.com", contains="URL")
# Another method would take care of mapping field values to
# an instance of the new class:
> url.obj <- new("URL_something.com", x="http://www.something.com/home/index.html")
> inherits(url.obj, "URL")
[1] TRUE
> obj$url <- url.obj
> class(obj$url)
[1] "URL"
# So I lose the information that it was actually of class "URL_something.com"
解決
マーティンが言ったことを拾う(上記のコメントを参照):R 2.14.0は、上記のことを修正します。
所属していません StackOverflow