4

URLwebcrawler/webscraper 設定で、それぞれのホスト/ドメインに固有のメソッドを記述できるように、基本参照クラスを動的に拡張したいと考えています。明確にするために、動的とは、「新しいドメインが検出されたときにクラス定義を自動的に生成する(たとえば、クラスURL_something.comから継承するクラスURL)」のようなものを意味します。

唯一の問題は、私のクラスWebPageが field の値が class であることを期待しているurlことですURLURL_something.comこれは classから継承されるため、 class のオブジェクトを受け入れますURLが、実際にはオブジェクトを class のインスタンスに変換しますURL。そのため、実際に class であるという情報を失い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"
4

1 に答える 1

1

Martin の発言 (上記のコメントを参照) を取り上げます。R 2.14.0 では、私が上で説明した内容が修正されています。

于 2011-11-15T23:24:42.687 に答える