5

インスタンスが参照クラスからのものかどうかをテストする簡単で汚い方法はありますか?

標準の R オブジェクト テストでは次の結果が得られますが、参照クラスのみをマークしているようには見えません。

classy <- setRefClass('classy',
    fields = list(
        count = 'numeric'
    ),
    methods = list(
        initialize = function( data=NULL ) {
            .self$data <<- data
        }
    )
)

instance <- classy$new() # instantiation

isS4(instance) # TRUE
mode(instance) # "S4"
typeof(instance) # "S4"
class(instance) # [1] "classy" attr(,"package") [1] ".GlobalEnv"
dput(instance) # new("classy", .xData = <environment>)
str(instance) # 
# Reference class 'classy' [package ".GlobalEnv"] with 1 fields
#  $ count: num(0) 
#  and 13 methods, of which 1 are possibly relevant:
#    initialize
4

1 に答える 1

6

これを試して:

 inherits(instance, "envRefClass")
# should return [1] TRUE

これは、 の「継承」セクションにありhelp(ReferenceClasses)ます。そして、ジョン・チェンバーズはこれを「汚い」と呼ぶことに反対するのではないかと思う。

Apropos Hadley のコメントは、isほとんど同じように動作することが文書化されていますinheritsが、条件付き継承を認識する能力が追加されています。

is(instance, "envRefClass")
#TRUE
于 2012-11-08T21:53:22.440 に答える