I've found that reference class objects tend to behave like plain old
environments wrt field access, unless a method on e.g. $<- is explicitly
defined.

Here is a code snippet:

library(methods)

Foo <- setRefClass("Foo")
foo <- Foo$new()
foo$a <- 2 # why does this succeed? not a valid field!
## set a silly $<- method
setReplaceMethod("$", "Foo", function(x, name, value) {
  callNextMethod(x, "b", value)})

foo$b <- 3


At first, we can set the non-existent field "a" without any error (I don't
think this is the intended behavior). Then we set a silly override on $<-
and things start to behave as expected:

Error in envRefSetField(x, what, refObjectClass(x), selfEnv, value) :
  "b" is not a field in class "Foo"

What am I doing wrong?

Thanks,
Michael

	[[alternative HTML version deleted]]

