Use ? to set a function's return type, argument types, or variable types
in the body of the function.
`?`(lhs, rhs) check_output(.output, .assertion, ...) check_arg(.arg, .assertion, ..., .bind = FALSE) declare(x, assertion, value, const = FALSE)
| lhs | lhs |
|---|---|
| rhs | rhs |
| .output | function output |
| .assertion | an assertion |
| ... | additional arguments passed to assertion |
| .arg | function argument |
| .bind | whether to actively bind the argument so it cannot be modified unless it satisfies the assertion |
| x | variable name as a string |
| assertion | a function |
| value | an optional value |
| const | whether to declare |
numeric ? function (x= ?numeric) { numeric ? y <- 2 res <- x + y res }#> # typed function #> function (x) #> { #> check_arg(x, numeric) #> declare("y", numeric, value = 2) #> res <- x + y #> check_output(res, numeric) #> } #> <environment: 0x000000002b89e240> #> # Return type: numeric #> # Arg types: #> # x: numeric