De Perl Bless-functie

De Perl Bless Functie



De objectgeoriënteerde programmeersyntaxis in Perl verschilt een beetje van de standaard objectgeoriënteerde programmeertalen zoals Java, C++, Python, enz. Het pakketsleutelwoord wordt in Perl gebruikt om een ​​klasse in Perl te definiëren. De object- en methode-declaratie in Perl zijn vergelijkbaar met de variabele- en subroutine-declaratie, maar de methode voor het declareren van een object in Perl om de referentie aan de referent te relateren is anders dan in andere programmeertalen. De functie bless() wordt gebruikt om deze taak uit te voeren. In deze tutorial wordt het gebruik van de bless-functie voor objectgeoriënteerd programmeren in Perl getoond.

Syntaxis:

De syntaxis van de functie “bless” wordt hieronder gegeven. Deze functie kan worden gebruikt met één argument of met twee argumenten. Normaal gesproken wordt deze functie gebruikt met twee argumenten, waarbij het eerste argument de referentievariabele is en het tweede argument de klassenaam is waarnaar door het eerste argument wordt verwezen. Wanneer deze met één argumentwaarde wordt gebruikt, verwijst de referentievariabele naar het huidige pakket.







zegen ref

of



zegen ref , naam van de klasse

Verschillende voorbeelden van de Bless()-functie

Het gebruik van de functie bless() op meerdere manieren wordt in dit deel van de tutorial getoond.



Voorbeeld 1: gebruik van de eenvoudige klasse en het object

In dit voorbeeld bevat het pakket met de naam “Book” een subroutine die werkt als de constructormethode van de klasse. Hier wordt de functie “bless” gebruikt om de variabelen te relateren aan de klassenaam die wordt opgegeven op het moment dat de methode Init() wordt aangeroepen.





#!/usr/bin/perl

gebruik strikt ;
gebruik waarschuwingen ;
gebruik 5.34.0 ;

#Definieer het pakket
pakket Boek ;
#Definieer de constructor
onder Init
{
#Initialiseer de klassenaam
mijn $className = verschuiving ;
#Initialiseer de variabelen
mijn $variabelen = {
'Boeknaam' => verschuiving ,
'Auteur naam' => verschuiving ,
'Gepubliceerd jaar' => verschuiving ,
'Prijs' => verschuiving
} ;

#Stel de referentie in met de referent
zegen $variabelen , $klassenaam ;
#Retourneer de referentievariabele
opbrengst $variabelen ;
}

#Maak een object van de klasse
mijn $bookObj = Init Boek ( 'Perl leren' , 'Randal L. Schwartz' , 1993 , Vier vijf ) ;

#Print de waarden van de klassevariabelen
inspraak 'Boekgegevens:' ;
inspraak ' \N Boeknaam: $bookObj->{'Boeknaam'}' ;
inspraak 'Naam auteur: $bookObj->{'Naam auteur'}' ;
inspraak 'Gepubliceerd jaar: $bookObj->{'PublishedYear'}' ;
inspraak 'Prijs: \$ $bookObj->{'Prijs'}' ;

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script:



  p1

Voorbeeld 2: De klasse en het object gebruiken met meerdere methoden

In dit voorbeeld bevat het pakket met de naam “Producten” twee methoden. Eén methode is Init() die wordt gebruikt om de benodigde variabelen te initialiseren en naar de variabelen te verwijzen met de klassenaam met behulp van de functie “bless”. Een andere methode, namelijk 'calcul_price('), wordt gebruikt om de kortingsprijs van het product te berekenen.

#!/usr/bin/perl

gebruik strikt ;
gebruik waarschuwingen ;
gebruik 5.34.0 ;

#Definieer het pakket
pakketproduct ;
mijn $variabelen = { } ;

#Definieer de constructor
onder Init
{
#Initialiseer de klassenaam
mijn $className = verschuiving ;
#Initialiseer de variabelen
$variabelen = {

'ID kaart' => verschuiving ,
'Naam' => verschuiving ,
'Prijs' => verschuiving

} ;

#Stel de referentie in met de referent
zegen $variabelen , $klassenaam ;
#Retourneer de referentievariabele
opbrengst $variabelen ;
}

#Declare-methode om de kortingsprijs te berekenen
sub bereken_prijs
{

mijn $discount_price = $variabelen- > { 'Prijs' } - $variabelen- > { 'Prijs' } * 0,1 ;
inspraak 'Kortingsprijs: \$ $kortingsprijs' ;

}

#Maak een object van de klasse
mijn $proObj = Init-product ( '6745' , 'Dell-monitor' , vijftig ) ;

#Print de waarden van de klassevariabelen
inspraak 'Productinformatie na 10 \% korting: ' ;
inspraak ' \N Id: $proObj->{'Id'}' ;
inspraak 'Naam: $proObj->{'Naam'}' ;
inspraak 'Originele prijs: \$ $proObj->{'Prijs'}' ;

#Roep de objectmethode aan
$proObj- > bereken_prijs ( ) ;

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script:

  p2

Voorbeeld 3: De klasse gebruiken door een module te maken

In dit voorbeeld wordt de door de gebruiker gedefinieerde Perl-module gemaakt in een apart bestand met de naam “CalPower.pm”, waarin de functie “bless” wordt gebruikt. Maak dit bestand met het volgende Perl-script. Deze module berekent de “x N “ waarbij de waarden “x” en “n” worden geleverd vanuit het Perl-script waarin deze module wordt geïmporteerd.

#!/usr/bin/perl

gebruik strikt ;
gebruik waarschuwingen ;
gebruik 5.34.0 ;

#Definieer de pakketnaam
pakket CalPower ;

#Definieer de constructor
onder Init
{
mijn $className = verschuiving ;
mijn $var =
{
nummer => verschuiving ,
stroom => verschuiving
} ;

zegen $var , $klassenaam ;
opbrengst $var ;

}

#Definieer de methode om de vermogenswaarde te berekenen
sub Bereken
{
mijn $var = verschuiving ;
mijn $resultaat = $var- > { 'nummer' } ;
voor ( mijn $ik = 1 ; $ik < $var- > { 'stroom' } ; $i++ )
{
$resultaat = $var- > { 'nummer' } * $resultaat ;
}
opbrengst $resultaat ;

}

Maak een Perl-bestand met het volgende script waarin de module “CalPower” wordt geïmporteerd om het vermogen te berekenen op basis van de invoerwaarde die van de gebruiker wordt overgenomen.

#!/usr/bin/perl

gebruik strikt ;
gebruik waarschuwingen ;
gebruik 5.34.0 ;
gebruik CalPower ;

#Neem de basiswaarde
afdrukken 'Voer de waarde van x in:' ;
kauw ( mijn $x = <> ) ;
#Neem het krachtdal
afdrukken 'Voer de waarde van n in:' ;
kauw ( mijn $n = <> ) ;

#Maak een object van de klasse
mijn $Obj = Start CalPower ( $x , $n ) ;

#Print de berekende vermogenswaarde
afdrukken '$x tot de macht $n is ' ;
zeg $Obj- > Berekenen ( ) ;

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script:

  p3

Conclusie

Het gebruik van de “bless”-functie in Perl wordt in deze tutorial getoond door een pakket in hetzelfde Perl-bestand te maken en een module in een ander bestand te maken.