2009年12月9日星期三

[PerlChina] Re: 关于一个子程序的问题

On Thu, Dec 10, 2009 at 11:14:46AM +0800, Michael Zeng wrote:
>不行吧,你要写 wowo(\@a , \@b )
>
>或者 wowo($a, $b) , 而 $a, $b本身就是ref变量
>
>sub里面都是靠 shift 来进行标量处理参数的
>

这样的啊, $a, $b是数组的元素个数吧, 在这个context下也表示数组本身的reference?

>
>
>2009/12/10 Xiaojun Deng <xjdengz@gmail.com>
>
>> On Thu, Dec 10, 2009 at 10:48:39AM +0800, cnhack TNT wrote:
>> >楼上正解,想要哈希或数组作为子程序的参数,请传递它们的引用给子程序
>> >
>>
>> 如同c的指针
>> Perl默认能传数组给函数吗?
>>
>> >2009/12/10 Michael Zeng <galaxy2004@gmail.com>
>> >
>> >> 是应该用引用
>> >>
>> >> 这样写传参数很晦涩, 特别是传数组的时候,而且开销很大,如果@list很大的时候
>> >>
>> >>
>> >>
>> >> sub check{
>> >> my @dd=@_[0];
>> >> my @num=@_[1];
>> >> my $n=0;
>> >> for(my $i=0;$i<@num;$i++){
>> >> if($dd[$num[$i]] ne 'NA'){
>> >> $n++;
>> >> }
>> >> }
>> >> return $n;
>> >> }
>> >>
>> >> 用引用会比较清晰
>> >>
>> >> 2009/12/10 钟声 <gh00920307@gmail.com>
>> >>
>> >> 引用应该可以的
>> >>>
>> >>> $a = \@one;
>> >>> $b =\@two;
>> >>> check($a,$b);
>> >>>
>> >>>
>> >>> sub check {
>> >>> my ($num,$dd) = @_;
>> >>> $num->[0];
>> >>> $dd ->[0];
>> >>>
>> >>> }
>> >>>
>> >>> 2009/12/10 camelbbs <camelbbs@gmail.com>
>> >>>
>> >>> 请问我的子程序想处理两个数组参数,应该怎么写,下面这样好像不行:
>> >>>>
>> >>>> sub check{
>> >>>> my @dd=shift;
>> >>>> my @num=shift;
>> >>>> my $n=0;
>> >>>> for(my $i=0;$i<@num;$i++){
>> >>>> if($dd[$num[$i]] ne 'NA'){
>> >>>> $n++;
>> >>>> }
>> >>>> }
>> >>>> return $n;
>> >>>> }
>> >>>>
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >> --
>> >> Yours Sincerely
>> >> Zeng Hong
>> >>
>> >> >
>> >>
>> >
>> >>
>>
>> >>
>>
>
>
>--
> Yours Sincerely
> Zeng Hong

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: