| validate_arguments {decorators} | R Documentation |
Validate the Type of Input Arguments
Description
Wrap a function with a input validation.
Usage
validate_arguments(func)
Arguments
func |
( |
Details
validate_arguments decorator allows the arguments passed to a function
to be parsed and validated using the function’s annotations before the
function is called.
How It Works
validate_arguments provides an extremely easy way to apply validation
to your code with minimal boilerplate. The original function needs to
have key-value pairs in its declaration, where the each value carries
its designated class.
When to Use It
To protect functions from receiving unexpected types of input arguments.
In
ValueObjects.
Examples: Functions with Built-in NA classes
Given a Customer
ValueObject
Customer <- function(given = NA_character_, family = NA_character_)
return(data.frame(given = given, family = family))
When Customer is decorated with validate_arguments
Customer <- validate_arguments(Customer)
Then passing arguments of any type other then the declared type prompts an informative error.
In the Customer example, both input arguments given and family are
declared as character.
Customer(given = "Bilbo", family = "Baggins") # Works as both arguments are character #> given family #> 1 Bilbo Baggins try(Customer(given = "Bilbo", family = 90201)) # Fails because family is not a character #> Error in Customer(given = "Bilbo", family = 90201) : #> family is of type `numeric` rather than `character`!
Value
(closure) An object that contains the original function bound to the environment of the decorator.
Note
The original function must have default values of the designated type.
References
Examples
Car <- function(model = NA_character_, hp = NA_real_){
return(data.frame(model = model, hp = hp))
}
Car <- validate_arguments(Car)
try(Car(model = 555, hp = 120)) # fails because model is numeric rather than character