in reply to Re^3: Rename a Moo constructor from "new" to "run"
in thread Rename a Moo constructor from "new" to "run"
use v5.16; package Foo { use Moo; has blah => (is => 'ro', required => 1); sub run { shift->new(@_) } } say Foo->run(blah => 42)->blah;
Doing SUPER::new will probably work in this case, though if you call it repeatedly, you won't benefit from some of the optimizations Moo does. (Moo doesn't actually built a Foo::new sub straight away, but when Moo::new gets called, it will notice that Foo::new is missing, build an optimized constructor, install it, and goto it.)
In cases where you weren't using a class building toolkit like Moo, and Foo::new was a hand-written constructor, then you definitely wouldn't want to call SUPER::new because you'd be bypassing the class's hand-written constructor (in favour of the superclass's constructor) which might be doing important stuff.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Rename a Moo constructor from "new" to "run"
by karlgoethebier (Abbot) on Apr 01, 2019 at 16:40 UTC |