ビネット(強調鉱山) "R6クラスの概要" から:クラスの
self
インサイド方法、self
は、オブジェクトを参照します。オブジェクトの公開メンバー(すべてはあなたがこれまで見てきたが)self$add()
のように、プライベートメンバーがアクセスされ、self$x
パブリックメンバーが
self
でアクセスしているのに対し
private
でアクセスされていますprivate
、private$queue
のように。
でもself
を通してあなた缶アクセスプライベートメソッドのであれば、あなたはprivate
を通してそれを行う必要があります。ドキュメンテーションがそのように動作してはいけないと言っている様子を見て、遠ざかるかもしれない振る舞いに頼らないでください。私はself
を使用してプライベートメソッドにアクセスすることができない、と述べた
:
library(R6)
bar <- R6Class("bar",
private = list(
foo = function() {
message("just foo it")
}
),
public = list(
call_self = function() {
self$foo()
},
call_private = function() {
private$foo()
}
)
)
b <- bar$new()
b$call_private()
# just foo it
b$call_self()
# Error in b$call_self() : attempt to apply non-function
はあなたの迅速かつ明確な答えをありがとう! – Erdi