首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

[D]Perl目标对象中的shift,应该怎么理解

2012-04-27 
[D]Perl目标对象中的shift,应该如何理解?帮解释一下,下面package中的shift,应该如何理解?-- Stone.pm ----

[D]Perl目标对象中的shift,应该如何理解?
帮解释一下,下面package中的shift,应该如何理解?

-- Stone.pm -------------------------
package Stone;

sub new {
  my $pkg = shift;
  my $hash= {
  name => shift,
  weight => shift
  };
  bless $hash,$pkg;
}
1;

-- 调用 main.pl ----------------------
use Stone;
my $obj = Stone->new('石灰','100');
print $obj->{'name'};

----------
Double行动:
原帖分数:50
加分:50


[解决办法]
这里的shift默认参数是@_,相当于shift @_
[解决办法]
函数的输入参数,作为列表保存在@_ 列表中,你可以使用$_[0],$_[1],$_[n]去引用对应的调用参数;
在你的例子中 @_的内容就是 ('石灰','100')
[解决办法]
Perl 里的函数参数,保存在 @_中,用shift可以取出参数,这是Perl和其他语言的不同,需要自己取参数。
[解决办法]

探讨
Perl 里的函数参数,保存在 @_中,用shift可以取出参数,这是Perl和其他语言的不同,需要自己取参数。

[解决办法]
package中的子程序把对象作为它的第一个参数。
因此my $pkg = shift; 是把 $pkg 当作一个对象引用来用。
往后的shift才是获取子程序的参数。

想学习Perl 面向对象编程,最好看下perlobj。
http://wiki.chinaunix.net/Perlobj.pod
[解决办法]
shift 是移除数组第一元素, 并返回该元素。
这里默认用的数组是@_(函数参数列表), 用于给变量赋值。
类中的函数参数列表第一个参数默认是类名或指向类对象指针, 在调用时可以省略

热点排行