Rakoons,


I keep running into a space with Raku where it would be nice to have some magic 
to reduce boilerplate.  I often make roles & classes with interface options 
that flow from a consuming script’s MAIN arguments, then the first bit of code 
at the top the MAIN block, then into instantiation.  If a person makes nice 
utility libraries with lots of options for the user & employs them a lot, the 
time consumed typing out the boilerplate adds up & bloats the code.  Is there 
any way to shorten this pattern?  I was thinking about a ‘switchable’ trait for 
attributes (with the naivety of a schoolboy).



my class Output {

    has $.csv      is switchable;

    has $.html     is switchable;

      .

      .

      .

    has $.xml     is switchable;

}



my class Timer {

    has $.count    is switchable;

    has $.expire   is switchable;

    has $.interval is switchable;

}



sub MAIN (

    Output.switchables,     #= switchables from Class 'Output'

    Timer.switchables,      #= switchables from Class 'Timer'

) {

    my Timer $t    .= new: :$expire, :$interval, :$count;   # variables 
magically appear in scope

    my Output $o   .= new: :$csv, :$html, … , :$xml;        # variables 
magically appear in scope

}



I estimate 10-50 lines of boilerplate could be removed from most of my Raku 
scripts with something like that.  Unfortunately, I don’t possess any dark 
magic for such things or I’d put forward an attempt.



Thanks,



Mark

Reply via email to