[Rd] Reference classes: accessor functions via 'getRefClass(...)$accessors(...)'

2010-11-17 Thread Janko Thyson
Hi there,

 

I'd like to choose between an static and dynamic access of a reference
class field, say 'a'.

 

myObj - getRefClass(Blabla)$new()

 

Static:   myObj$a

Dynamic: myObj$a.get() where the function retrieves the data
from a database (or some other location), stores it to a buffer and
optionally updates the static field value 'a'.

 

I've set up such a method 'a.get()' where I can actually decide between
static and dynamic runmode (so the method also wraps the call 'myObj$a' for
the static runmode).

 

Now I saw that setting up such accessor methods (get/set) is already done
for me if I use 'getRefClass(Blabla)$accessors(.)'. I just don't
understand what exactly I have to do there, because this results in an
error: 'getRefClass(Blabla)$accessors(a)'

 

Can anyone point me to the correct use of 'getRefClass(.)$accessors(.)'?

 

Thanks a lot,

Janko


[[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Reference classes: accessor functions via 'getRefClass(...)$accessors(...)'

2010-11-17 Thread Romain Francois

Le 17/11/10 13:07, Janko Thyson a écrit :


Hi there,



I'd like to choose between an static and dynamic access of a reference
class field, say 'a'.



myObj- getRefClass(Blabla)$new()



Static:   myObj$a

Dynamic: myObj$a.get() where the function retrieves the data
from a database (or some other location), stores it to a buffer and
optionally updates the static field value 'a'.



I've set up such a method 'a.get()' where I can actually decide between
static and dynamic runmode (so the method also wraps the call 'myObj$a' for
the static runmode).



Now I saw that setting up such accessor methods (get/set) is already done
for me if I use 'getRefClass(Blabla)$accessors(.)'. I just don't
understand what exactly I have to do there, because this results in an
error: 'getRefClass(Blabla)$accessors(a)'



Can anyone point me to the correct use of 'getRefClass(.)$accessors(.)'?



Thanks a lot,

Janko


Hi,

fields can either be data or active binding functionss. See 
?makeActiveBinding for some example of active binding functions in their 
original context.


Here is an example of a reference class that keeps its data in a file.

require( methods )

Foo - setRefClass( Foo,
fields = list(
file = character,
x = function(value){
if( missing( value ) ){
read.table( file )
} else{
write.table( value, file = file )
}
}
)
)

foo - Foo$new( file=/tmp/iris.txt )
foo$x - iris
foo$x

write.table( subset( iris, Petal.Length  2), file = /tmp/iris.txt )
foo$x


Does that help ?


Romain

--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/9VOd3l : ZAT! 2010
|- http://bit.ly/c6DzuX : Impressionnism with R
`- http://bit.ly/czHPM7 : Rcpp Google tech talk on youtube

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Reference classes: accessor functions via 'getRefClass(...)$accessors(...)'

2010-11-17 Thread Vitalie S.
Janko Thyson janko.thy...@ku-eichstaett.de writes:

 Hi there,

 I'd like to choose between an static and dynamic access of a reference
 class field, say 'a'.

 myObj - getRefClass(Blabla)$new()

 Static:   myObj$a

 Dynamic: myObj$a.get() where the function retrieves the data
 from a database (or some other location), stores it to a buffer and
 optionally updates the static field value 'a'.

 I've set up such a method 'a.get()' where I can actually decide between
 static and dynamic runmode (so the method also wraps the call 'myObj$a' for
 the static runmode).

 Now I saw that setting up such accessor methods (get/set) is already done
 for me if I use 'getRefClass(Blabla)$accessors(.)'. I just don't
 understand what exactly I have to do there, because this results in an
 error: 'getRefClass(Blabla)$accessors(a)'

 Can anyone point me to the correct use of 'getRefClass(.)$accessors(.)'?

It works for me:

X - setRefClass(XXX, fields = list(a = character))
X$accessors(a)
X
# ...
# Class Methods:  
#callSuper, export, getA, import, initFields, setA
# ...

accessors() convenience method creates setA and getA functions:

x - X$new()
x$getA
#Class method definition for method getA()
#function () 
#a
#environment: 02a198c0

HTH,
Vitalie.

 

 Thanks a lot,

 Janko

   [[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Reference classes: accessor functions via 'getRefClass(...)$accessors(...)'

2010-11-17 Thread Janko Thyson
Thanks a lot for the comments! I'll give the serveral alternatives a try to
see if it gets me what I want.

Cheers, 
Janko

 -Ursprüngliche Nachricht-
 Von: Vitalie S. [mailto:spinuvit.l...@gmail.com]
 Gesendet: Mittwoch, 17. November 2010 13:51
 An: Janko Thyson
 Cc: 'r-de...@r-project. org'
 Betreff: Re: Reference classes: accessor functions via
 'getRefClass(...)$accessors(...)'
 
 Janko Thyson janko.thy...@ku-eichstaett.de writes:
 
  Hi there,
 
  I'd like to choose between an static and dynamic access of a
 reference
  class field, say 'a'.
 
  myObj - getRefClass(Blabla)$new()
 
  Static:   myObj$a
 
  Dynamic: myObj$a.get() where the function retrieves the
 data
  from a database (or some other location), stores it to a buffer and
  optionally updates the static field value 'a'.
 
  I've set up such a method 'a.get()' where I can actually decide
 between
  static and dynamic runmode (so the method also wraps the call
 'myObj$a' for
  the static runmode).
 
  Now I saw that setting up such accessor methods (get/set) is already
 done
  for me if I use 'getRefClass(Blabla)$accessors(.)'. I just don't
  understand what exactly I have to do there, because this results in
 an
  error: 'getRefClass(Blabla)$accessors(a)'
 
  Can anyone point me to the correct use of
 'getRefClass(.)$accessors(.)'?
 
 It works for me:
 
 X - setRefClass(XXX, fields = list(a = character))
 X$accessors(a)
 X
 # ...
 # Class Methods:
 #callSuper, export, getA, import, initFields, setA
 # ...
 
 accessors() convenience method creates setA and getA functions:
 
 x - X$new()
 x$getA
 #Class method definition for method getA()
 #function ()
 #a
 #environment: 02a198c0
 
 HTH,
 Vitalie.
 
 
 
  Thanks a lot,
 
  Janko
 
  [[alternative HTML version deleted]]

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel