아주 기본적인 클래스 정의를 가진 펄 모듈 파일 MyClass.pm
이 있습니다. 오브젝트 메소드를 사용하는 펄 맵
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의 인스턴스를 생성하는
myClass.pl
파일이 있습니다.
Use of uninitialized value $char in concatenation (.) or string at MyClass.pm line 16.
: 나는 그것을 잘 작동
displayChar
메소드를 호출하지만 그 방법과지도 기능을 사용하려고 할 때 그것이 나에게 세 번 (한 번 배열 항목마다, 내 생각)이 오류를 제공
#!/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);
지도 함수를 잘못 사용하고 있습니까? 아니면 첫 번째 매개 변수로 객체 메소드를 사용할 수 없습니까?
'new MyClass'를 사용하지 마십시오. 이것은 Java가 아닙니다. 'new'는 키워드가 아닙니다. 'MyClass-> new()'는 장래에 혼란을 줄여 줄 것입니다. –
예를 더 잘 설명하기 위해 질문을 편집했습니다. 팁 @DaveCross를 주셔서 감사합니다 – nanocv