2008年11月21日星期五

Re: [PerlChina] 传参的一点疑问

2008/11/22 owen nirvana <freeespeech@gmail.com>:
> 传递的参数是数组或者哈希的时候,怎么获取相关参数
>

以数组为参时:

sub func {
   my @b = @_;
   # ...
}

my @a = (1,2,3);
func(@a);

哈希为参时:

sub func {
    my %b = @_;
}

my %a = (cat => 1, dog => 2);
func(%a);

这里的行为是哈希和数组会自动平展成 @_ 中的离散元素 :) 如果想避免,可以使用数组和哈希的引用,例如:

sub func {
   my @b = @{ $_[0] }
   # ...
}

my @a = (1,2,3);
func(\@a);

# OR  func([1,2,3])

而对于哈希:

my func {
   my %b = %{ $_[0] };
   # ...
}

my %a = (cat => 1, dog => 2);
func(\%a);

# OR  func( { cat => 1, dog => 2 } );

参数是否 slurpy 的行为在 Perl 6 中可以更优雅地控制。。。呵呵

Hope this helps :)

-agentzh

没有评论: