बहुत सारे "एक वर्ग एक ब्लूप्रिंट है, एक ऑब्जेक्ट उस ब्लूप्रिंट से बनाया गया है", लेकिन चूंकि आपने मूस और पर्ल का उपयोग करके एक विशिष्ट उदाहरण मांगा है, मैंने सोचा कि मैं एक प्रदान करूंगा।
इस उदाहरण में, हमारे पास 'हैकर' नामक एक कक्षा होगी।वर्ग (एक खाका की तरह) बताता है कि हैकर्स कर रहे हैं (उनकी विशेषताओं) और जो उन्होंने (उनके तरीकों) कर सकते हैं:
package Hacker; # Perl 5 spells 'class' as 'package'
use Moose; # Also enables strict and warnings;
# Attributes in Moose are declared with 'has'. So a hacker
# 'has' a given_name, a surname, a login name (which they can't change)
# and a list of languages they know.
has 'given_name' => (is => 'rw', isa => 'Str');
has 'surname' => (is => 'rw', isa => 'Str');
has 'login' => (is => 'ro', isa => 'Str');
has 'languages' => (is => 'rw', isa => 'ArrayRef[Str]');
# Methods are what a hacker can *do*, and are declared in basic Moose
# with subroutine declarations.
# As a simple method, hackers can return their full name when asked.
sub full_name {
my ($self) = @_; # $self is my specific hacker.
# Attributes in Moose are automatically given 'accessor' methods, so
# it's easy to query what they are for a specific ($self) hacker.
return join(" ", $self->given_name, $self->surname);
}
# Hackers can also say hello.
sub say_hello {
my ($self) = @_;
print "Hello, my name is ", $self->full_name, "\n";
return;
}
# Hackers can say which languages they like best.
sub praise_languages {
my ($self) = @_;
my $languages = $self->languages;
print "I enjoy programming in: @$languages\n";
return;
}
1; # Perl likes files to end in a true value for historical reasons.
अब है कि हम अपने हैकर वर्ग मिल गया है, हम हैकर कमाना शुरू कर सकते वस्तुओं:
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use Hacker; # Assuming the above is in Hacker.pm
# $pjf is a Hacker object
my $pjf = Hacker->new(
given_name => "Paul",
surname => "Fenwick",
login => "pjf",
languages => [ qw(Perl C JavaScript) ],
);
# So is $jarich
my $jarich = Hacker->new(
given_name => "Jacinta",
surname => "Richardson",
login => "jarich",
languages => [ qw(Perl C Haskell) ],
);
# $pjf can introduce themselves.
$pjf->say_hello;
$pjf->praise_languages;
print "\n----\n\n";
# So can $jarich
$jarich->say_hello;
$jarich->praise_languages;
यह निम्न उत्पादन में परिणाम है:
Hello, my name is Paul Fenwick
I enjoy programming in: Perl C JavaScript
----
Hello, my name is Jacinta Richardson
I enjoy programming in: Perl C Haskell
अगर मैं चाहता हूँ मैं ca मेरे पास जितनी हैकर ऑब्जेक्ट्स हैं, लेकिन अभी भी एक हैकर क्लास है जो बताती है कि ये सभी कैसे काम करते हैं।
शुभकामनाएँ
,
पॉल
वाह, सुपर उत्तर .. शुरुआत में संक्षिप्त सारांश, फिर एक असली दुनिया नमूना और मूस में ट्यूटोरियल! धन्यवाद! – lexu
अब देखें मैंने सोचा था कि अत्यधिक शब्दशः था लेकिन हे सिर्फ यही है। अच्छा जवाब हालांकि। :) – cletus