[PerlChina] 传参的一点疑问

agentzh agentzh at gmail.com
Fri Nov 21 23:19:49 PST 2008


2008/11/22 owen nirvana <freeespeech at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/china-pm/attachments/20081122/55d4eef4/attachment.html>


More information about the China-pm mailing list