Carl Franks wrote:
I have a class that normally takes a list of named arguments.
I also want to be able to handle a single argument.
class Foo {
multi method new (Class $class: Str $date) {
return $class.bless(date => $date);
}
submethod BUILD ($.date, $.time, $.offset) {
# some error checking here
}
}
my $foo = Foo.new('2005-05-30');
#
Is this the correct way to handle my scenario?
It's *a* correct way. But redundant in this particular case.
The universal new() would handle the one-argument call exactly the same
as your overloaded new() does. Presumably, however, the one-argument variant
would do something else as well.
My explicit 'new' method should only handle the case of
a single argument - otherwise the 'new' method
inherited from Class will handle a list of named
arguments.
Correct.
My explicit BUILD submethod is called, regardless
of which 'new' method is called, correct?
Yes. It's invoked by bless().
Damian