s3_dispatch()
prints a list of all possible function names that will be
considered for method dispatch. There are four possible states:
=>
method exists and is found byUseMethod()
.->
method exists and is used byNextMethod()
.*
method exists but is not used.Nothing (and greyed out in console): method does not exist.
Learn more at https://adv-r.hadley.nz/s3.html.
Usage
s3_dispatch(call, env = parent.frame())
Examples
x <- Sys.time()
s3_dispatch(print(x))
#> => print.POSIXct
#> print.POSIXt
#> * print.default
s3_dispatch(is.numeric(x))
#> is.numeric.POSIXct
#> => is.numeric.POSIXt
#> is.numeric.default
#> * is.numeric (internal)
s3_dispatch(as.Date(x))
#> => as.Date.POSIXct
#> as.Date.POSIXt
#> * as.Date.default
s3_dispatch(sum(x))
#> sum.POSIXct
#> sum.POSIXt
#> sum.default
#> => Summary.POSIXct
#> Summary.POSIXt
#> Summary.default
#> -> sum (internal)
# Internal vs. regular generic
x1 <- 1
x2 <- structure(2, class = "double")
my_length <- function(x) UseMethod("my_length")
s3_dispatch(my_length(x1))
#> my_length.double
#> my_length.numeric
#> my_length.default
s3_dispatch(my_length(x2))
#> my_length.double
#> my_length.default
length.double <- function(x) 10
s3_dispatch(length(x1))
#> * length.double
#> length.numeric
#> length.default
#> => length (internal)
s3_dispatch(length(x2))
#> => length.double
#> length.default
#> * length (internal)