내가 알아낼 수없는 이상한 것이있다. 오래된 표준 Exporter 모듈을 사용하여 몇 가지 상수를 내보내려는 무스 클래스가 있습니다. 그러나, 곧 내가 내 수업에 extends Exporter
를 추가, 어떤 이유로, 기본 무스 생성자는 더 이상 상속하지 않으며 나는 치명적인 오류 얻을됩니다 : 여기 무스 : Extending Exporter가 생성자를 사라지게합니까?
Can't locate object method "new" via package "MyApp::Dispatch"
이 문제를 보여줍니다 간단한 테스트입니다.
extends
라인을 제거
package Foo;
use Moose;
use constant NARF => 'poit';
extends 'Exporter';
1;
$ perl -I./lib -MFoo -e '$f=Foo->new'
Can't locate object method "new" via package "Foo" at -e line 1.
문제가 사라질 수 있습니다.
이것은 무스 0.93을 사용하고 있습니다.
글쎄, 분명 했어야했는데, 그렇지 않아야 했나요? 나는 오늘 밤 바보 같아. :) MooseX :: NonMoose를 사용하기까지 했으므로 그렇게 생각해야했지만 그렇지 않았습니다. 어쨌든, 상속보다'import '를 가져 오는 것이 좋습니다. – friedo
무스의'extends'는'@ISA = @ list'와 같습니다. 이리스트가 컴파일 타임에 비어 있다면 Moose는 자동으로'Moose :: Object'를 @ISA에 넣을 것입니다. – perigrin
@perigrin : 기본적으로 말한 것이 었습니다. – ysth