2013-10-14 6 views
2
이 같은 펄에 OO를 코딩 좋아

:펄 - OOP/무스 - 메소드 서명

use MooseX::Declare; 
use Method::Signatures::Modifiers; 
use v5.14.2; 


class Talker 
{ 
    method talk (Str $text) { 
     $self=>say $text; 

    } 

    my $talk_object = Talker->new(); 
    $talk_object->talk('Hello!'); 
} 

불행하게도이 매우 느리다는, 내가 어떤 마우스 또는 무 동등한를 찾을 수 없습니다. Perl이 PyPy와 같은 것을 가지고 있지 않은 것은 얼마나 불쌍한가.

누군가가 더 가벼운 구현으로 동일한 파일을 보관하는 방법을 알고 있습니까?

+1

천천히 어떨까요? Moose를 사용할 때의 컴파일 타임에 대해 이야기하고 있다면, 일종의 영구 코드를 사용하여 반복 컴파일을 피하는 것이 좋습니다. – AKHolland

+0

예, 컴파일 시간입니다. 적어도, 내가 지금 볼 수있는 한. 반복되는 컴파일을 피하려고 노력하는 것은 좋은 해킹이 아닙니다. : /. Moops를 볼 것입니다. OOP는 불행히도 이러한 혼란으로 인해 Perl의 여하튼 불쾌한 맛을 가지고 있습니다. – royskatt

답변

5

실험적인 Moops 모듈은 상당히 유사한 다른 구문 확장입니다. 이것은 MooseX :: Declare (하지만 더 빠름)와 코어 펄에 그러한 문법을 ​​가져 오려고하는 p5-mop 프로젝트에 의해 영감을 받았습니다.

귀하의 예는 중요한 변경없이 번역됩니다. MOP 백엔드를 지정하려면 class Foo using Moose과 같은 클래스를 선언 할 수 있지만 기본값은 Moo이며 Moose보다 간단합니다.

+2

분명히 Moops를 살펴볼 가치가 있습니다. 저의 체중과 편의성 사이에 균형이 잡힌 것 같습니다. 작은 cron 기반 스크립트에서 시도하기 시작했습니다. 시작 시간은 나에게 잘 될 것 같습니다. Perl의 최근 버전 (5.14 이상)이 필요합니다. –