Generate boilerplate code for R6 classes. Given R6 class create getters and/or setters for selected class fields or use RStudio addins to insert methods straight into class definition.
You can install development version from Github using:
::install_github("jakubsob/r6methods") remotes
Core functionality comes with make_methods
function.
library(r6methods)
library(R6)
<- R6Class(
Person "Person",
public = list(
name = NULL,
age = NA,
initialize = function(name, age = NA) {
$name <- name
self$age <- age
self
},print = function(...) {
cat("Person: \n")
cat(" Name: ", self$name, "\n", sep = "")
cat(" Age: ", self$age, "\n", sep = "")
invisible(self)
}
),private = list(
secret1 = NULL,
secret2 = NULL
) )
Create getters and setters for private fields:
make_methods(Person, "private", "both")
#> #' @description Setter for secret1
#> set_secret1 = function(secret1) {
#> private$secret1 <- secret1
#> },
#> #' @description Getter for secret1
#> get_secret1 = function() {
#> private$secret1
#> },
#> #' @description Setter for secret2
#> set_secret2 = function(secret2) {
#> private$secret2 <- secret2
#> },
#> #' @description Getter for secret2
#> get_secret2 = function() {
#> private$secret2
#> }
Or only getters:
make_methods(Person, "private", "get", add_roxygen = FALSE)
#> get_secret1 = function() {
#> private$secret1
#> },
#> get_secret2 = function() {
#> private$secret2
#> }
You can also create methods for fields of your liking, not only all of private/public:
make_methods(Person, c("age", "secret1"), "get", add_roxygen = FALSE)
#> get_age = function() {
#> self$age
#> },
#> get_secret1 = function() {
#> private$secret1
#> }
Four addins are supplied with the package. They are grouped into 2 families:
Addins with gadget
suffix open gadget in RStudio which
allows user to have more control over the generated methods.