【发布时间】:2012-10-09 08:55:59
【问题描述】:
我正在尝试在 Perl 中使用命名参数。我一直使用http://perldesignpatterns.com/?NamedArguments 作为参考。
这似乎是有道理的。但是,我似乎无法真正获取传入的值。
我也尝试过更改为$args{'name'}、$args{"name"},但没有成功。我似乎无法获取传入的值。我需要查看哪个方向才能弄清楚到底发生了什么?
文件 doh.pm
package doh;
sub new ()
{
my %args = @_;
$name = $args{name};
print $name;
}
1;
__END__
文件 test.pl
use warnings;
use doh;
$trial = doh::;
$trial->new(name => "Tyson");
运行 test.pl 时不打印输出。
【问题讨论】:
-
$trial = doh::; $trial->new是一种奇怪的做法doh->new!!! -
好在 Perl 忽略了方法上的原型,因为你的原型是错误的。摆脱它!
-
在非常简单的层面上,我使用“$trial = doh::”的原因是因为我有一些东西设置,doh 可以用另一个包替换,但另一个包包含相同的功能/过程/方法。而不是必须用 duh 替换 doh-> (在整个脚本中),我认为使用通用名称作为 $ 并将其视为别名会更“可读” (如果这是正确的术语)包。我经常使用 perl 编写脚本,但更多的 OO 和它的其他细节我还没有完全了解其中的细微差别。
-
很明显我没有展示我正在使用的实际脚本,但我真的不能因为工作。我会问你所说的“我的原型是错误的”ikegami 是什么意思。同样在昨天之前,我什至不知道您可以执行“$trial = doh::;”我刚试了一下,它做了一些我想做的事情。
-
你在
new上给出了一个原型,告诉 Perl 它不接受任何参数。这显然不是真的。