On 19/10/2021 3:43 p.m., Jens Oehlschlägel wrote:
I didn't find an answer elsewhere:
My package 'bit' creates a S3 generic 'clone' and exports it.
Furthermore it registers a S3 method 'clone.default' (not exported).
My package 'ff' imports package 'bit' and exports and registers a new S3
method 'clone.ff'. However, calling 'clone(ffobj)' dispatches to
clone.default instead of clone.ff !? Why?
You should show us the NAMESPACE entries involving clone and clone.ff
from ff.
Some comments that may or may not be relevant:
- Normally you wouldn't export clone.ff, it's enough to register it
using S3method().
- You may have created a new generic named clone, and that's what
clone.ff would attach itself to. You can have bit::clone and ff::clone
as different generics and that would cause problems.
What is the recommended way to create new S3-methods that get
dispatched? In earlier versions of the packages I simply exported
everything - that worked.
I import the generic and use S3method(generic, method). I don't export
the methods, so I wouldn't be able to call z <- clone.ff(a).
Duncan Murdoch
Best
Jens
> require(ff)
>
> a <- as.ff(0:9)
> class(x)
[1] "ff_vector" "ff"
>
> x <- clone(a)
> y <- bit:::clone.default(a)
> z <- clone.ff(a)
>
> # cloned ffobjects should have different filenames>
> filename(a) # original
[1] "/tmp/Rtmpk17JRZ/ff/clone1ed54cbb5060.ff"
>
> filename(x) # unexpected equal (dispatch to clone.default)
[1] "/tmp/Rtmpk17JRZ/ff/clone1ed54cbb5060.ff"
>
> filename(y) # expected equal
[1] "/tmp/Rtmpk17JRZ/ff/clone1ed54cbb5060.ff"
>
> filename(z) # OK
[1] "/tmp/Rtmpk17JRZ/ff/clone1ed551d3ee66.ff"
> version
_
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 4
minor 1.1
year 2021
month 08
day 10
svn rev 80725
language R
version.string R version 4.1.1 (2021-08-10)
nickname Kick Things
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel