[Rd] Reference Classes: removing methods -> implications for objects/instances of that class

Janko Thyson janko.thyson at ku-eichstaett.de
Tue Nov 23 22:11:47 CET 2010


Dear list,

just to make sure that I understand 'unregistering' methods for S4 reference
classes correctly:

If I registered a method and want to 'unregister' (i.e. remove) this method
again, objects/instance created of the respective class still feature the
removed method until I do an explicit reassign ('my.instance <-
getRefClass("Classname")$new()'), right? 

setRefClass("Shab", fields=list(a="numeric"))
# Register method
getRefClass("Shab")$methods(list(aSquare=function() a^2))
getRefClass("Shab")$methods()

# Create instance
shab    <- getRefClass("Shab")$new()
shab$a  <- 10
# Use method
shab$aSquare()

# Remove method
getRefClass("Shab")$methods(list(aSquare=NULL))
getRefClass("Shab")$methods() 	# Gone.
shab$aSquare() 				# Still possible

shab    <- getRefClass("Shab")$new()
shab$aSquare() 				# Not possible anymore

Is it also possible to remove a method so that all instances do not feature
the respective method anymore without having to resort to an explicit
reassign? Or is this technically not possible or not a desired feature? 

TIA,
Janko

########## SYSTEM INFO ##########
Windows XP SP3
R 2.12.0 (patched as of 2010-11-22)
Eclipse 3.6.1 (Helios)
StatET 0.9.x
###############################



More information about the R-devel mailing list