Dave Cross dave at
Fri May 3 09:21:19 BST 2013

Quoting "Th. J. van Hoesel" <th.j.v.hoesel at>:

> to me, it would make sense for 3 parameters:
> Number::Fraction->(int, num, den);
> but that would be helpful to work with the so called vulgar  
> fractions and cold write things like:
> my $twothreefourth = Number::Fraction->new( 2, 3, 4);

I think we're starting to get quite close to an area where positional  
parameters are potentially confusing.

   Number::Fraction->new(1, 2); # num = 1, den = 2
   Number::Fraction->new(1, 2, 3) # int = 1, num = 2, den = 3

I would probably think seriously about using named parameters here

   Number::Fraction->new(numerator => 1, denominator => 2);
   Number::Fraction->new(integer => 1, numerator => 2, denominator => 3);

Of course, the fact that the names of the parameters are so long  
really counts against you here, so you'd want to allow aliases - int,  
den & num.

In fact, it probably makes sense to move it all to Moose (or Moo, at least).

> can I drop other cases or do you prefer to allow method calls with  
> unlimited number of parameters ???

You need to deal with idiots who ignore the documentation and call the  
methods with the incorrect parameters. Currently, if you call new()  
with more than two parameters, the extra ones are just silently  
ignored. I think I like that option best, but I wouldn't object if the  
constructor just died instead.



p.s. This conversation would be much easier to follow if we all used  
the same quoting style :-/

More information about the mailing list