inst/doc/Introduction-to-bandicoot.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
library(bandicoot)

## -----------------------------------------------------------------------------
# You don't actually need to specify BASE here. This is only for demonstration.
DEMO <- new_class(BASE, class_name = "DEMO")
DEMO

## -----------------------------------------------------------------------------
DEMO$..type..
DEMO$..class..

## -----------------------------------------------------------------------------
DEMO$..dir..()
DEMO$..methods..()

## -----------------------------------------------------------------------------
DEMO$..str..()

## -----------------------------------------------------------------------------
pre_defined_fn <- function() 1 + 2

register_method(DEMO, inline_fn = function() 1 + 1, pre_defined_fn = pre_defined_fn)

DEMO$inline_fn()
DEMO$pre_defined_fn()

## -----------------------------------------------------------------------------
DEMO$val <- 5

register_method(DEMO, get_val = function() self$val)

DEMO$get_val()

## -----------------------------------------------------------------------------
init <- function(first_name, employee_id) {
  self$first_name <- first_name
  self$employee_id <- employee_id
}

register_method(DEMO, ..init.. = init)

## -----------------------------------------------------------------------------
mike <- DEMO$instantiate("Mike", 25)
mike

## -----------------------------------------------------------------------------
mike$first_name
mike$employee_id

## -----------------------------------------------------------------------------
class_DEMO_2 <- function(env = new.env(parent = parent.frame())) {
  
  new_class(env = env, class_name = "DEMO_2")
  
  init_ <- function(first_name, employee_id) {
    self$first_name <- first_name
    self$employee_id <- employee_id
  }
  
  get_email_ <- function() {
    paste0(self$first_name, "_", self$employee_id, "@company.com")
  }
  
  str_ <- function() {
    paste(use_method(self, super()$..str..)(), 
          paste("Name:", self$first_name,
                "\nEmployee ID:", self$employee_id,
                "\nEmail:", self$get_email()), 
          sep = "\n")
  }
  
  register_method(env,
                  ..init.. = init_,
                  get_email = get_email_,
                  ..str.. = str_)
  
  return(env)
}

## -----------------------------------------------------------------------------
DEMO_2 <- class_DEMO_2()
mike <- DEMO_2$instantiate("Mike", 25)
mike$get_email()

## -----------------------------------------------------------------------------
mike$..str..()
mike

Try the bandicoot package in your browser

Any scripts or data that you put into this service are public.

bandicoot documentation built on May 29, 2024, 8:01 a.m.