Working with the reference class
There is also a class system that has reference semantics. It is more like the class system in other object-oriented programming languages.
First, to define a reference class (RC), we supply a class definition to setRefClass()
. Unlike the S4 class system where we use new()
to create an instance, setRefClass()
returns an instance generator. For example, we define a class named Vehicle
, which has two fields: a numeric position and a numeric distance. We store the instance generator to a variable named Vehicle
:
Vehicle <- setRefClass("Vehicle", fields = list(position = "numeric", distance = "numeric"))
To create an instance, we use Vehicle$new
to create new instances of the Vehicle
class:
car <- Vehicle$new(position = 0, distance = 0)
Unlike S4, the fields of RC are not slots, so we can use $
to access them:
car$position ## [1] 0
Each instance we create with Vehicle$new
is an object of reference...