ptR: Pointers for R objects

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/ptR.R

Description

Pointer mechanism and dynamic fields for object in the Rb-OOP system.

Usage

1
2
ptR(value)
key %<-% value

Arguments

key

a character string or an object of class "ptR".

value

any R object or an object of class "ptR".

Details

Thanks to the environment object provided by the R system, it is possible to easily provide in the R system the notion of pointer. Let us assume that a variable pt1 is assigned to a new R environment and that the variable value is initialized to the number 1. This content is accessible by typing the code pt1$value. Then, a new variable pt2 assigned to pt1 contains the variable value as a list does. But, differently from a list, any change of the content of the variable value in the environment pt1 is also updated in the environment pt2. For example, if one executes pt1$value <- 2 then pt2$value leads to the output 2. The dynamic nature of environment is definitely different from the static nature of most of the other objects provided by the R system. The class ptR related to the notion of pointer is internally represented as an environment containing only one R variable named value.

Value

The execution of the code ptR(value) returns a pointer (i.e. object of class ptR) with content value. To directly assign a pointer, the user operator %<-% is provided. At the creation, the name of the pointer in its character string has to be supplied in the left-handed side. Once the pointer is created, to update the content of the pointer, it is then possible to directly put the pointer in the left-handed side. If the right-handed side refers to an existing pointer, a replacement of the environment is directly applied as expected. However, this last possibility is better performed by directly assigning a pointer with another pointer. Let us also underline that the notion of pointer has been introduced to provide the notion of dynamic instance variable in the concept of OOP called R-OOP proposed to mimick Ruby-like OOP in the R system. In a such context, the user does not have to know how a pointer is internally represented.

Author(s)

R. Drouilhet

See Also

Binding, CqlsObj, RObj

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
## pointer
famousName <- ptR("Brown")
famousName
famousName$value

# pointer via the operator "%<-%"
"b" %<-% c(3,1:4) # equivalent to:  b <- ptR(c(3,1:4))
b
b$value

# since b is created, you could modified it
b %<-% c(b$value,2) # append 2
b

# equality means that the content is now dynamic!
bb <- b
bb

bb %<-% 5:2
bb
# b has changed too since b and bb represent the same environment.
b 

rcqls/CqlsRObj documentation built on May 27, 2019, 3:04 a.m.