ona*_*000 3 perl parameter-passing
我正在尝试在Perl中使用命名参数.我一直在使用http://perldesignpatterns.com/?NamedArguments作为参考.
这似乎有道理.但是,我似乎无法实际获取发送的值.
我也试过改变$args{'name'},$args{"name"}也没有运气.我似乎无法获得传入的值.我需要指望哪个方向来弄清楚究竟发生了什么?
package doh;
sub new ()
{
my %args = @_;
$name = $args{name};
print $name;
}
1;
__END__
Run Code Online (Sandbox Code Playgroud)
use warnings;
use doh;
$trial = doh::;
$trial->new(name => "Tyson");
Run Code Online (Sandbox Code Playgroud)
运行test.pl时不会输出任何输出.
我不确定你要做什么$trial = doh::;,但你的主要问题是你在处理你的方法调用之前试图处理参数.
首先,使用启动每个Perl文件
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
是的,你需要两者.
当调用在Perl的方法(而不是普通的子程序)上的左侧的东西->经营者(调用者)被压入参数列表的开始.所以你需要先从列表中删除它.对于构造函数方法,invocant通常是类名.对于实例方法,它将是对象本身.所以
sub new {
my $class = shift;
my %args = @_;
print "name is: $args{name}\n";
}
Run Code Online (Sandbox Code Playgroud)
(如果你不想使用shift,你也可以写my ( $class, %args ) = @_;)
例如,方法是将变量命名为$self.
还要注意我在子程序名后删除了parens; 这些对OO方法没有任何作用,无论如何它们可能不会按你的想法行事.
| 归档时间: |
|
| 查看次数: |
3827 次 |
| 最近记录: |