我對Moose和OO編程相當陌生。尋找一些指導。我有以下Dir
穆斯類,建立File
對象的列表:擴展Moose類以使內部可以使用不同的類
#!usr/bin/perl
package Dir;
use Moose;
use Modern::Perl;
has 'files' => (is => 'rw', isa => 'HashRef[File]');
<..>
sub BUILD {
my $self = shift;
<..>
map { $files{$_} = File->new (path => $path . '/' . $_) } @file_names;
$self->files (\%files);
<..>
}
我想編寫一個名爲MyDir
是extends
上述Dir
類新類。然而,而不是創建File
類對象,我想用專門的對象擴展File
對象:
#!usr/bin/perl
package MyDir;
use Moose;
use Modern::Perl;
has 'type' => (is => 'ro', isa => 'Str', default => '');
has 'files' => (is => 'rw', isa => 'HashRef[MyFile]');
我想穆斯可能有辦法做到這一點無需重寫BUILD
子程序,但我不確定如何執行此操作。
不要在無效的情況下使用'map' 。這只是一個「for」循環。 – melpomene
'$ path'和'@ file_names'從哪裏來? – melpomene
'$ path'是傳遞給構造函數的參數。 '@ file_names'只是目錄內的文件名數組。我刪除了與該問題無關的所有代碼。 – StevieD