R62S3: S3 Method Generator from R6 Class

Description Usage Arguments Details Value See Also Examples

View source: R/R62S3.R

Description

Auto-generates S3 generics from an R6 Class.

Usage

1
2
3
4
5
6
7
8
9
R62S3(
  R6Class,
  dispatchClasses = list(R6Class),
  assignEnvir = parent.env(environment()),
  mask = FALSE,
  scope = "public",
  arg1 = "object",
  exclude = NULL
)

Arguments

R6Class

R6ClassGenerator to generate public methods from

dispatchClasses

list of classes to assign dispatch methods on

assignEnvir

environment in which to assign the generics/methods, default is parent of current environment.

mask

logical, determines if non-generic functions should be masked if found, see details.

scope

determines the scope of methods that should be copied, either "public", "active" or both

arg1

if mask == TRUE or no generic is found, then arg1 determines what name to give to the first argument in the generic.

exclude

an optional character vector naming the public methods or active bindings to exclude from the generator

Details

If scope == "public" then searches in a given R6::R6Class for all public methods that are not initialize or clone. If scope == "active" then searches for all active bindings. Currently there is only support for calling active bindings but not setting them. If scope == c("public", active") then both are included. Any methods/bindings passed to exclude will be ignored in the search.

If mask == TRUE then the generator ignores if a generic or method of the same name exists and will create a new S3 generic/method. If mask == FALSE then the generator will create a new generic only if an existing generic does not already exist. Methods and generics are created using standard convention.

The optional dispatchClasses argument takes a list of R6::R6Classes and allows methods to be created for multiple classes at one time.

S3 generics are detected with utils::isS3stdGeneric().

Value

Assigns generics/methods/functions to the chosen environment.

See Also

Other R62s: R62Fun(), R62S4()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
printMachine <- R6::R6Class("printMachine",
        public = list(initialize = function() {},
                      printer = function(str) print(str)),
        active = list(Status = function() "Printing"))

pm <- printMachine$new()

# scope = public
R62S3(printMachine, assignEnvir = topenv())
printer(pm, "Test String B")

# scope = active
R62S3(printMachine, assignEnvir = topenv(), scope = 'active')

# note support for accessing only, cannot assign
# values to an active binding
Status(pm)

R62S3 documentation built on March 13, 2020, 3:29 a.m.