Construct a new object with pproto. This object system is inspired from the ggproto system used in the ggplot2 package.

pproto(`_class` = NULL, `_inherit` = NULL, ...)

Arguments

_class

Class name to assign to the object. This is stored as the class attribute of the object. This is optional: if NULL (the default), no class name will be added to the object.

_inherit

pproto object to inherit from. If NULL, don"t inherit from any object.

...

A list of members to add to the new pproto object.

Examples

Adder <- pproto("Adder",
  x = 0,
  add = function(self, n) {
    self$x <- self$x + n
    self$x
  }
)

Adder$add(10)
#> [1] 10
Adder$add(10)
#> [1] 20

Abacus <- pproto("Abacus", Adder,
  subtract = function(self, n) {
    self$x <- self$x - n
    self$x
  }
)
Abacus$add(10)
#> [1] 30
Abacus$subtract(10)
#> [1] 20