1 use v6;
2 #如果参数是可选的, 可以在后面加个?后定义
3 sub Choo($x, $y?){
4 say $x+$y;
5 }
6 Choo(1);
7 Choo(1,2);
8 #具名参数, 也就是字典形式的调用
9 sub Dit(:name($n), :age($a)){
10 say $n,' is ', $a;
11 }
12 Dit(name => 'root', age => '360');
13 Dit(age=>'php', name=>'localhost');
14 Dit(:name('li'), :age(20));
15 #具名参数, 在定义时, 可可以这样
16 sub Dit2(:$name, :$age){
17 say $name,'|', $age;
18 }
19 #还可以这样调用, 当没带值时, 只加:时, 默认为Treu, 加:!时, 默认为False
20 Dit2(:name, :!age);
21
22 #如果不知道有多少个参数, 要收集所有参数, 可以用一个*放在变量前收集
23 #这个*表示收集, 后面的@all还是表示一个数组(注意)
24 sub All($user, *@all){
25 say $user;
26 say @all;
27 }
28 All(1,2,3,4,5);
29 #还可以这样收集
30 sub All2($user, *%all){
31 say $user;
32 say %all.kv;
33 }
34 All2(1,a=>1,b=>2);
35 All2(1,:a(2), :b, :!c);
36
37
38
39 sub Arr($a, @a, %a){
40 say $a;
41 say @a;
42 say %a.kv;
43 }
44 my $a=1;
45 my @a=1;
46 my %a=(:a);
47 Arr($a, @a, %a);