[Rd] S4 methods with default argument of NULL
Benjamin Tyner
btyner @end|ng |rom gm@||@com
Sat Nov 6 14:51:31 CET 2021
Greetings,
I noticed that starting with R version 3.5.0, it is now possible to do,
for example:
setGeneric(name = "foo",
def = function(x, y, ...) standardGeneric("foo"),
valueClass = "fooResult"
)
setMethod(f = "foo",
signature = c("character", "character"),
definition = function(x, y = NULL, z = NULL, ...) {
force(y)
message(sprintf("x is %s", x))
structure(list(), class = "fooResult")
})
foo("a", "b") # this works in R >= 3.5.0, but fails in R < 3.5.0
(Prior to R version 3.5.0, it gives "Error in force(y) : object 'y' not
found")
I am curious to learn whether the change permitting this was:
1. an intentional enhancement
2. unintentional, but a "happy accident" (i.e., a desirable side
effect of some other enhancement)
3. unintentional, and perhaps undesirable (i.e., a loosening of
standards)
For reference, this came up in the debugging of the following issue:
https://github.com/DyfanJones/noctua/issues/170
Any comments to shed some light would be greatly appreciated.
Regards,
Ben
More information about the R-devel
mailing list