opts_R6: Constructive options for class 'R6'

View source: R/s3-R6.R

opts_R6R Documentation

Constructive options for class 'R6'

Description

These options will be used on objects of class 'R6'.

Usage

opts_R6(constructor = c("R6Class", "next"), ...)

Arguments

constructor

String. Name of the function used to construct the object.

...

Additional options used by user defined constructors through the opts object

Details

Depending on constructor, we construct the object as follows:

  • "R6Class" (default): We build the object using R6Class()$new(), see details.

  • "next" : Use the constructor for the next supported class.

Objects of class "R6" are harder to construct than "R6ClassGenerator" objects, because 'constructive' doesn't know by default the constructor (i.e. class generator) that was used to build them. So what we do is we build a class generator that generates this object by default. This is why the generated code is in the form R6Class()$new().

Another layer of complexity is added when the object features an initialize() method, we cannot implement it in the class generator because it might change the behavior of ⁠$new()⁠ and return a wrong result (or fail). For this reason the initialize() method when it exists is repaired as an extra step.

construct_diff() works well to inspect the differences between two R6 objects where alternatives like waldo::compare() or base::all.equal() don't return anything informative.

Value

An object of class <constructive_options/constructive_options_R6>


constructive documentation built on April 3, 2025, 9:39 p.m.