source(usethis::proj_path("vignettes", "_common.R"))
decorators
A decorator is a function that receives a function, extends its behaviour, and returned the altered function. Any caller that uses the decorated function uses the same interface as it were the original, undecorated function.
time_it
decorator# Running the original Sys.sleep() produces no output Sys.sleep(0.1) # Decorating the Sys.sleep() with time_it() measures Sys.sleep() execution time # and outputs the measurement Sys.sleep <- decorators::time_it(base::Sys.sleep) Sys.sleep(0.1)
validate_arguments
decorator## Define a functions that averages two numbers average_two_numbers <- function(a = NA_real_, b = NA_real_) mean(c(a, b)) ## Before: Averaging two nun-numeric values returns NA and prompts a warning average_two_numbers(a = "1", b = "2")
## Decorating average_two_numbers() with validate_arguments() checks input types average_two_numbers <- decorators::validate_arguments(average_two_numbers) ## After: Averaging two nun-numeric prompts an informative error average_two_numbers(a = "1", b = "2")
cat("Error in average_two_numbers(a = \"1\", b = \"2\") : a is of type `character` rather than `numeric`!")
You can install the released version of decorators
from CRAN with:
install.packages("decorators")
And the development version from GitHub with:
# install.packages("devtools") devtools::install_github("tidylab/decorators")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.