in reply to Re: how to export a method
in thread how to export a method
That idiom can be thought of as the various modules (PDL::Primitive, PDL::Ops) being roles, and they add "methods" to the PDL namespace. The answer to the question here, in order to operate like a typical PDL module, would both export a rp function, and implement a PDL::rp function that would add a PDL-object method. Because this is a function that only makes sense with an ndarray as its input, the natural thing would be to alias the exportable function to the PDL:: version:
It is very important in this specific instance to note that reshape (as seen in PDL::Core#reshape) "changes the ndarray in place", i.e. is a mutation. PDL needs a new withdims affine transformation which would do what the OP thinks reshape does. EDIT: See https://github.com/PDLPorters/pdl/issues/217 for discussion of reshape and its problems.package PDL::CV; use strict; use warnings; use Exporter 'import'; our @EXPORT_OK = qw(rp); *rp = \&PDL::rp; # alternative idiom, e.g. for zeroes: sub zeroes {PDL->zeroes(@_)} sub PDL::rp { my ($self, $input) = @_; $self .= $input->reshape($self->dims); $self; }
|
|---|