Camelia
Prev: Multiple signatures

Optional parameters

multi sub process_template($input, %params?) { multi sub process_template($input, $output, %params?) { If we defined our functions that way we could call process_template("from.tmpl", "to.html"); and it would know how to find the right subroutine leaving the %params hash empty. Side note: this part is not yet implemented so the above code won't yet work. There is a lot more one can do with signatures but I think this is enough for today.

Question mark (?) after the variable name means it is an optional varible.

     multi sub process_template($input, %params?) {
examples/subroutines/optional_params.p6
#!/usr/bin/env perl6
use v6;

# search the text within a file return 1 if found, 0 if not
sub search ($text, $file) {
    my $fh = open $file, :r;
    for $fh.readline -> $line {
        if index($line, $text) > -1 {
            return 1;
        }
    }
    return 0;
}

# optional parameter
sub search2($text, $file, $all?) {
    my $fh = open $file, :r;
    my $cnt = 0;
    for $fh.readline -> $line {
        if index($line, $text) > -1 {
            return 1 if not $all;
            $cnt++;
        }
    }
    return $cnt;
}


Prev: Multiple signatures

Table of Contents

Comments

In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation.
comments powered by Disqus

Perl 6 Tricks and Treats newsletter

Register to the free newsletter now, and get updates and news.
Email:
Name: