You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello,
I am currently writing a package using the S4 OOP system, and was wondering whether there was an existing canonical way to memoize S4 methods. One of the errors I got was that setMethod cannot be passed a memoized function because the S3 class memoised is not technically an S4 class extending function, which is what the MethodDefinition class (for S4 methods) requires:
Error in initialize(value, ...) :
cannot use object of class “memoised” in new(): class “MethodDefinition” does not extend that class
A simple workaround is to formally declare memoised to be an S4 class extending function via the following code:
If we were to do that, we'd use setOldClass(), but that sort of S4 manipulation can have unexpected and far reaching complications, so I wouldn't recommend it.
Hello,
I am currently writing a package using the S4 OOP system, and was wondering whether there was an existing canonical way to memoize S4 methods. One of the errors I got was that
setMethod
cannot be passed a memoized function because the S3 classmemoised
is not technically an S4 class extendingfunction
, which is what theMethodDefinition
class (for S4 methods) requires:A simple workaround is to formally declare
memoised
to be an S4 class extendingfunction
via the following code:Is there a reason not to do this? Should this be part of the
memoise
package (assumingmethods
is loaded)?Here's a reprex:
The text was updated successfully, but these errors were encountered: