method<- {S7} | R Documentation |
Register a S7 method for a generic
Description
A generic defines the interface of a function. Once you have created a
generic with new_generic()
, you provide implementations for specific
signatures by registering methods with method<-
.
The goal is for method<-
to be the single function you need when working
with S7 generics or S7 classes. This means that as well as registering
methods for S7 classes on S7 generics, you can also register methods for
S7 classes on S3 or S4 generics, and S3 or S4 classes on S7 generics.
But this is not a general method registration function: at least one of
generic
and signature
needs to be from S7.
Note that if you are writing a package, you must call methods_register()
in your .onLoad
. This ensures that all methods are dynamically registered
when needed.
Usage
method(generic, signature) <- value
Arguments
generic |
A generic function, i.e. an S7 generic, an external generic, an S3 generic, or an S4 generic. |
signature |
A method signature. For S7 generics that use single dispatch, this must be one of the following:
For S7 generics that use multiple dispatch, this must be a list of any of the above types. For S3 generics, this must be a single S7 class. For S4 generics, this must either be an S7 class, or a list that includes at least one S7 class. |
value |
A function that implements the generic specification for the
given |
Value
The generic
, invisibly.
Examples
# Create a generic
bizarro <- new_generic("bizarro", "x")
# Register some methods
method(bizarro, class_numeric) <- function(x) rev(x)
method(bizarro, new_S3_class("data.frame")) <- function(x) {
x[] <- lapply(x, bizarro)
rev(x)
}
# Using a generic calls the methods automatically
bizarro(head(mtcars))