क्या आने वाले डेटा के आधार पर कक्षाओं को तुरंत चालू करने के लिए पर्ल और Moose
का उपयोग करने के लिए एक सरल या बेहतर (= > आसान बनाए रखने का तरीका) है?मैं पर्ल और मूस में एक कारखाने को कैसे कोड कर सकता हूं?
निम्न कोड एक प्रोजेक्ट से एक अलग नमूना है जिसे मैं काम कर रहा हूं।
package FooBar;
use Moose;
has 'SUBCLASS' =>('isa'=>'Str',required=>'1',is=>'ro');
has 'MSG' =>('isa'=>'Str',required=>'1',is=>'ro');
sub BUILD {
my $self = shift;
my ($a)[email protected]_;
bless($self,$a->{SUBCLASS})
}
sub Hi {
my $self=shift;
print "Hi, I'm a " . ref($self) ." and I say [". $self->MSG()."]\n";
}
package Foo;
use Moose;
extends ("FooBar");
package Bar;
use Moose;
extends ("FooBar");
package main;
use strict;
use warnings;
for my $line (<DATA>) {
my ($case,$msg)=split(/[\n\r,]\s*/,$line);
FooBar->new(SUBCLASS=>$case,MSG=>$msg)->Hi();
}
__DATA__
Foo, First Case
Bar, Second Case
संपादित: यह सिर्फ मुझे लगा कि यह बहुत ज्यादा क्या होता है जब आप DBI कहते हैं। यदि यह आसान या बेहतर है
$case->new(MSG => $msg)->Hi();
आप पर निर्भर तय करने के लिए है: पैरामीटर पारित आधार पर, यह है, जबकि एक (अधिकतर) संगत इंटरफेस
धन्यवाद, मुझे ग्रोक करने में कुछ समय लगेगा :-) – lexu
** में [qw (सबस्क्लस एमएसजी)] => है => 'ro', आवश्यक => 1); ** साफ चाल .. लेकिन "अनजान" किसी के लिए perl से परिचित नहीं है .. – lexu
नहीं यह नहीं है। यह मूस एपीआई का हिस्सा है और पर्ल के साथ कुछ लेना देना नहीं है। (यदि आप अनजान होना चाहते हैं, तो आप लिखेंगे "qw/SUBCLASS MSG /" के लिए $ _ => (...) है। लेकिन निश्चित रूप से, हर कोई जानता है कि यह भी क्या करता है।) – jrockway