[Rd] Should slot<-() alter its first argument?

Benjamin Tyner btyner @end|ng |rom gm@||@com
Sat Sep 21 03:03:57 CEST 2019


It appears this started with R version 3.5.0. Under R 3.4.4 we have:

 > setClass("Z", rep=representation(x="character"))
 > z <- new("Z", x="orig")
 > `@<-`(z, "x", value="newer")
An object of class "Z"
Slot "x":
[1] "newer"

 > z
An object of class "Z"
Slot "x":
[1] "newer"

 > `slot<-`(z, "x", value="newest")
An object of class "Z"
Slot "x":
[1] "newest"

 > z
An object of class "Z"
Slot "x":
[1] "newest"


> We noticed that the slot<- function alters its first argument, which goes
> against the grain of a functional language.  The similar @<- does not
> change its first argument.  Is this intended?  The timeSeries and distr
> package depend on this altering.
>
> >/setClass("Z", rep=representation(x="character")) />/z <- new("Z", x="orig") />/`@<-`(z, "x", value="newer") /An object of class "Z"
> Slot "x":
> [1] "newer"
>
> >/z /An object of class "Z"
> Slot "x":
> [1] "orig"
>
> >//>/`slot<-`(z, "x", value="newest") /An object of class "Z"
> Slot "x":
> [1] "newest"
>
> >/z /An object of class "Z"
> Slot "x":
> [1] "newest"
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
> 	[[alternative HTML version deleted]]



More information about the R-devel mailing list