Auto-generates functions from an R6 Class.

R62Fun(
  R6Class,
  assignEnvir = parent.env(environment()),
  detectGeneric = TRUE,
  mask = FALSE,
  dispatchClasses = list(R6Class),
  scope = "public",
  arg1 = "object",
  exclude = NULL
)

Arguments

R6Class

R6ClassGenerator to generate public methods from

assignEnvir

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

detectGeneric

logical, if TRUE (default) detects if the method has a S3 or S4 generic and defines functions accordingly

mask

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

dispatchClasses

list of classes to assign dispatch methods on

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

Value

Assigns generics/methods/functions to the chosen environment.

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 function. 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() and S4 generics are detected with methods::.S4methods().

See also

Other R62s: R62S3(), R62S4()

Examples

printMachine <- R6::R6Class("printMachine", public = list(initialize = function() {}, printer = function(str) print(str)), active = list(Status = function() "Printing")) pm <- printMachine$new() # scope = public R62Fun(printMachine, assignEnvir = topenv()) printer(pm, "Test String B")
#> [1] "Test String B"
# scope = active R62Fun(printMachine, assignEnvir = topenv(), scope = 'active') # note support for accessing only, cannot assign # values to an active binding Status(pm)
#> [1] "Printing"