Skip to content
Back to formatted view

Raw Message

Message-ID: <x2r8zqchbw.fsf@blueberry.kubism.ku.dk>
Date: 2001-03-22T08:56:35Z
From: Peter Dalgaard
Subject: Call by reference: Was: Object orientation?
In-Reply-To: "Henrik Bengtsson"'s message of "Wed, 21 Mar 2001 20:10:05 -0800"

"Henrik Bengtsson" <henrikb at braju.com> writes:

> To reply to Yves Gauvreau question (Jan 24, 2001) about how to set values
> within function, it is possible to do without without using the "<<-"
> assignment operator or other nasty tricks. I had the same problem and I did
> a nasty workaround two weeks ago implementing the functionality of reference
> variables, but today I "ran into" the [R] help page for ".Alias". With
> .Alias one can immitate call by reference! Here is an example that shows how
> it works:
.....
> set <- function(object, value) {
>   this <- .Alias(object);
>   this$value <- value;
>   return (invisible());
> }

It may work, but I wouldn't think it is documented to do so and could
easily get blown away by an internal change (and *I'm* not going to put
checks in to ensure that it keeps working)! 

If you really must do this kind of thing, try coding along the lines
of

set<-function(object,value)
	eval.parent(substitute(object$value<-value))

Or use assign(), or even "<<-", at least that is well-defined. It can't
get nastier than .Alias.

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._