The code you presented is very close to object oriented in the style of the proto package. For example,
library(proto) # generate a single object p p <- proto(a = 0, geta = function(.) .$a, incra = function(.) .$a <- .$a + 5) p$geta() p$a # same p$incra() p$geta() # Or if you want to be able to generate objects like that: Account <- function() proto(a = 0, geta = function(.) .$a, incra = function(.) .$a <- .$a + 5) # pp is an Account object pp <- Account() pp$geta() pp$a # same pp$incra() pp$geta() See http://r-proto.googlecode.com for more info. On Wed, Mar 31, 2010 at 9:44 PM, Jeff Brown <dopethatwantsc...@yahoo.com> wrote: > > Hi, > > The code below creates a value, x$a, which depending on how you access it > evaluates to its initial value, or to what it's been changed to. The last > two lines should, I would have thought, evaluate to the same value, but they > don't. > > f <- function () { > x <- NULL; > x$a <- 0; > x$get.a <- function () { > x$a; > }; > x$increment.a <- function () { > x$a <<- x$a + 5; > }; > x > }; > x <- f(); > x$increment.a(); > x$get.a(); > x$a; > > This can be repeated; each time you call x$increment.a(), the value > displayed by x$get.a() changes, but x$a continues to be zero. > > Is that totally weird, or what? > > Thanks, > Jeff > -- > View this message in context: > http://n4.nabble.com/Scope-and-assignment-baffling-tp1747582p1747582.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.