使用对象方法的 Perl 映射
Perl map using object method
我有一个 Perl 模块文件 MyClass.pm
,其中包含非常基本的 class 定义。
use strict;
use warnings;
package MyClass;
sub new {
my $this = shift;
my $self = {};
bless $self, $this;
return $self;
}
sub displayChar{
my $self = shift;
my $char = shift;
print $char . "\n";
}
1;
我还有一个 myClass.pl
文件,它创建了一个 MyClass 的实例。
#!/usr/bin/perl
use strict;
use warnings;
use MyClass;
my $myClass = MyClass->new();
$myClass->displayChar('a'); # This line works right
my @charArray = ('a', 'b', 'c');
map($myClass->displayChar, @charArray);
当我调用 displayChar
方法时它工作正常,但是当我尝试将 map 函数与该方法一起使用时它给我这个错误三次(我猜每个数组项一次):
Use of uninitialized value $char in concatenation (.) or string at MyClass.pm line 16.
我是不是用错了地图功能?或者可能无法将对象方法用作第一个参数?
您需要向 displayChar
方法传递一个值:
map($myClass->displayChar($_), @charArray);
map 在本地将 $_ 变量设置为数组的每个值。
我有一个 Perl 模块文件 MyClass.pm
,其中包含非常基本的 class 定义。
use strict;
use warnings;
package MyClass;
sub new {
my $this = shift;
my $self = {};
bless $self, $this;
return $self;
}
sub displayChar{
my $self = shift;
my $char = shift;
print $char . "\n";
}
1;
我还有一个 myClass.pl
文件,它创建了一个 MyClass 的实例。
#!/usr/bin/perl
use strict;
use warnings;
use MyClass;
my $myClass = MyClass->new();
$myClass->displayChar('a'); # This line works right
my @charArray = ('a', 'b', 'c');
map($myClass->displayChar, @charArray);
当我调用 displayChar
方法时它工作正常,但是当我尝试将 map 函数与该方法一起使用时它给我这个错误三次(我猜每个数组项一次):
Use of uninitialized value $char in concatenation (.) or string at MyClass.pm line 16.
我是不是用错了地图功能?或者可能无法将对象方法用作第一个参数?
您需要向 displayChar
方法传递一个值:
map($myClass->displayChar($_), @charArray);
map 在本地将 $_ 变量设置为数组的每个值。