you can omit the list and do the following: open.account.2 <- function(total) { deposit <- function(amount) { if(amount <= 0) stop("Deposits must be positive!\n") total <<- total + amount cat(amount, "deposited. Your balance is", this$balance(),"\n\n") } withdraw <- function(amount) { if(amount > total) stop("You don't have that much money!\n") total <<- total - amount cat(amount, "withdrawn. Your balance is", this$balance(),"\n\n") } balance <- function() { cat("Your balance is", this$total, "\n\n") } this <- environment() }
But notice that the function balance returns nothing (because of the cat) and balance message will be printed (cat'ed) doubly - this is easy to fix. (but you don't really need "this" in this case as you can use "balance" instead of "this$balance") The last row does two things: invisibly returns the environment (necessary for things like x$balance()) and assigns it to "this" Regards, Kenn On Sun, Mar 20, 2011 at 3:45 AM, Russ Abbott <russ.abb...@gmail.com> wrote: > Thanks for all the suggestions. I realize that this isn't the most > important > thing in the world -- and as a newcomer to R I gather it's not the way most > people use R anyway. > > But I tried to do what looked like the simplest suggestion. > > open.account.2 <- function(total) { > this <- environment() > list( > deposit = function(amount) { > if(amount <= 0) > stop("Deposits must be positive!\n") > total <<- total + amount > cat(amount, "deposited. Your balance is", this$balance(), > "\n\n") > }, > withdraw = function(amount) { > if(amount > total) > stop("You don't have that much money!\n") > total <<- total - amount > cat(amount, "withdrawn. Your balance is", this$balance(), > "\n\n") > }, > balance = function() { > cat("Your balance is", this$total, "\n\n") > } > ) > } > > When I ran it, this is what happened. > > > x <- open.account.2(100) > > x$balance() > > Your balance is 100 > > OK so far. But > > > x$deposit(50) > Error in cat(amount, "deposited. Your balance is", this$balance(), "\n\n") > : > attempt to apply non-function > > > Am I doing this the wrong way? > > Thanks for your interest. > > *-- Russ * > > > > On Sat, Mar 19, 2011 at 6:33 PM, Bert Gunter <gunter.ber...@gene.com> > wrote: > > > See also the proto package, I believe. > > > > -- Bert > > > > On Sat, Mar 19, 2011 at 5:51 PM, Janko Thyson > > <janko.thyson.rst...@googlemail.com> wrote: > > > You might want to check out Reference Classes (?SetRefClass). The > object > > > itself is stored in '.self' and can be referenced that way. > > > > > > HTH, > > > Janko > > > > > > -----Ursprüngliche Nachricht----- > > > Von: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org > ] > > Im > > > Auftrag von Russ Abbott > > > Gesendet: Samstag, 19. März 2011 23:35 > > > An: r-help@r-project.org > > > Betreff: [R] Referring to objects themselves > > > > > > Is it possible to refer to an object from within a method, as in *this > > *in > > > Java? I can't find anything about this in the documentation. Sorry if > I > > > missed it. > > > > > > Thanks. > > > > > > *-- Russ Abbott* > > > *_____________________________________________* > > > *** Professor, Computer Science* > > > * California State University, Los Angeles* > > > > > > * Google voice: 747-*999-5105 > > > * blog: *http://russabbott.blogspot.com/ > > > vita: http://sites.google.com/site/russabbott/ > > > *_____________________________________________* > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > 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. > > > > > > > > > > > -- > > Bert Gunter > > Genentech Nonclinical Biostatistics > > > > [[alternative HTML version deleted]] > > > ______________________________________________ > 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. > > [[alternative HTML version deleted]]
______________________________________________ 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.