Hi Julian,
> @a = Koha::Patrons->find('foo'); # would result in @a = (undef) And that leads to issues: if ( @a ) { # = 1 say $a[0]->borrowernumber; # BOOM } See also https://perlmaven.com/how-to-return-undef-from-a-function (was it the link you were talking about?) Cheers, Jonathan On Wed, 13 Dec 2017 at 10:34 Julian Maurice <julian.maur...@biblibre.com> wrote: > Hi developers, > > I stumbled upon a line of code recently and I can't figure out why it > has be done this way. I hope you can help me :) > > The line in question is in Koha::Objects::find: > > croak 'Cannot use "->find" in list context' if wantarray; > > I read the two bugs (18539 and 18179) and the link given by Jonathan but > I still don't understand why the call in list context has been > forbidden. Why not simply return undef (an explicit undef) when no > records have be found ? It would work as expected in scalar and list > contexts. > > Here is a possible rewrite of 'find' to better explain what I mean: > > sub find { > my ( $self, @pars ) = @_; > > my $object = undef; > > @pars = grep { defined } @pars; > if (@pars) { > my $result = $self->_resultset()->find(@pars); > if ($result) { > $object = $self->object_class()->_new_from_dbic($result); > } > } > > return $object; > } > > @a = Koha::Patrons->find('foo'); # would result in @a = (undef) > {a => K::P->find('foo'), b => 'bar'}; # would result in {a => undef, b > => 'bar'} > > Please tell me what you think. > > -- > Julian Maurice <julian.maur...@biblibre.com> > BibLibre > _______________________________________________ > Koha-devel mailing list > Koha-devel@lists.koha-community.org > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel > website : http://www.koha-community.org/ > git : http://git.koha-community.org/ > bugs : http://bugs.koha-community.org/ >
_______________________________________________ Koha-devel mailing list Koha-devel@lists.koha-community.org http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/