Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Thoughts on "one function, flexible arguments"?

by daxim (Curate)
on Aug 29, 2019 at 07:03 UTC ( #11105218=note: print w/replies, xml ) Need Help??

in reply to Thoughts on "one function, flexible arguments"?

Use Kavorka (and Moops in case of object-oriented programming) for flexible calling-style (both plain key/value and hashref) and sensible error messages and type constraints. It's the best of the bunch. my_func only contains logic - look at all the boilerplate code you did not have to write!

Positional parameters and named parameters may be mixed, but each parameter cannot be both. It is not a good idea because that would preclude optional parameters, hence this is not supported.

use Kavorka; fun my_func(Str :$message!, Bool :$newline) { print "Message received: $message"; print "\n" if $newline; } my_func(message => 'x'); my_func(message => 'y', newline => 1); my_func({message => 'z'}); my_func(); # Named parameter `message` is required my_func(message => do { require DateTime; DateTime->now }); # Reference bless( {...) did not pass type constraint "Str"

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11105218]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2020-11-27 03:39 GMT
Find Nodes?
    Voting Booth?

    No recent polls found