From d@v|@ @end|ng |rom r@tud|o@com  Wed Aug  7 15:10:21 2019
From: d@v|@ @end|ng |rom r@tud|o@com (Davis Vaughan)
Date: Wed, 7 Aug 2019 09:10:21 -0400
Subject: [Rd] NextMethod() and argument laziness
Message-ID: <CABzLhzyY_HtAE-TuYrtVDyZyaEGxH3N5R=Cg862o29DECZXL8Q@mail.gmail.com>

Hi all, I'd like to ask if the following behavior is a bug. To me it
certainly feels surprising, at the very least. In this example, I would
like to call NextMethod() from my `child` object, have `cols` be left
untouched, and then substitute(cols) in the parent method. It works when
you use a `parent` object (as expected), but I would have also expected to
get `mpg` back when calling it from the `child` method.

my_generic <- function(x, cols) {
  UseMethod("my_generic")
}
my_generic.parent <- function(x, cols) {
  substitute(cols)
}
my_generic.child <- function(x, cols) {
  NextMethod()
}
obj_parent <- structure(mtcars, class = c("parent", class(mtcars)))
obj_child <- structure(obj_parent, class = c("child", class(obj_parent)))

my_generic(obj_parent, mpg)
#> mpg

my_generic(obj_child, mpg)
#> cols

Thanks,
Davis

	[[alternative HTML version deleted]]



[Rd] NextMethod() and argument laziness
Davis Vaughan