Massiiviviidete erinevad kasutusviisid
Massiivi viitemuutujate kasutamine erinevatel eesmärkidel on näidatud järgmiselt.
Massiivi muutuja | Massiivi viitemuutuja | Eesmärk |
@massiiv | @{ $ref_array } | Seda kasutatakse kõikidele massiivi väärtustele viitamiseks. |
skalaar @massiiv | skalaar @ref_array | Seda kasutatakse massiivide koguarvu loendamiseks. |
$#massiivi | $#ref_array | Seda kasutatakse suurima indeksi määratlemiseks. |
$massiiv[indeks] | $tef_massiiv->[indeks] | Seda kasutatakse massiivi konkreetsele elemendile viitamiseks. |
Perli massiivi viidete kasutamine
Selles õpetuse osas kirjeldatakse Perli massiivi viitemuutujate erinevaid kasutusviise.
Näide 1: Looge massiiviviide
Looge Perli fail järgmise skriptiga, mis deklareerib neljast stringiväärtusest koosneva massiivi ja selle massiivi viitemuutuja. Võrdlusmuutuja salvestab põhimassiivi mälu asukoha ja mõlemad muutujad jagavad sama asukohta. Viitemuutuja ja põhimassiivi sisu trükitakse hiljem.
#!/usr/bin/perl
kasutage ranget ;
kasutada hoiatused ;
kasuta 5.34.0 ;
kasuta Data::kallurit ;
#Deklareerige stringi massiiv
minu @ hulkur = ( 'Perl' , 'Java' , 'Bash' , 'Python' ) ;
#Looge massiivimuutujale viide
minu $ref_array = \ @ hulkur ;
öelda 'Massiivi viite sisu on $ref_array' ;
öelda 'Dumberi muutujat kasutavad massiivi väärtused on järgmised: ' ;
#Prindi viitemuutuja koos muutujaga Dumper
printida Kallur $ref_array ;
Väljund:
Skripti käivitamisel kuvatakse järgmine väljund:
Näide 2: Värskendage massiivi pärast viite loomist
Looge järgmise skriptiga Perli fail, mis näitab, et kui mõnda põhimassiivi elementi muudetakse, muudetakse samal ajal ka võrdlusmassiivi muutuja vastavat väärtust. Kõik põhimassiivi väärtused prinditakse enne massiivi mis tahes väärtuse värskendamist ja kõik viitemassiivi väärtused trükitakse pärast teise elemendi värskendamist muutuja „dump” abil.
#!/usr/bin/perl
kasutage ranget ;
kasutada hoiatused ;
kasuta 5.34.0 ;
kasuta Data::kallurit ;
#Deklareerige stringi massiiv
minu @ hulkur = ( 'Perl' , 'Java' , 'Bash' , 'Python' ) ;
öelda 'Peamised massiivi väärtused on: ;
#Prindi viitemuutuja koos muutujaga Dumper
printida Kallur \ @ hulkur ;
#Looge massiivimuutujale viide
minu $ref_array = \ @ hulkur ;
#Uuenda massiivi 2. elementi
$strarr [ 1 ] = 'C++' ;
öelda 'Viitemassiivi väärtused (pärast põhimassiivi värskendamist) on järgmised: ' ;
#Prindi viitemuutuja koos muutujaga Dumper
printida Kallur $ref_array ;
Väljund:
Pärast skripti täitmist ilmub järgmine väljund. Vastavalt väljundile muudetakse võrdlusmassiivi teine element 'C++', kuna põhimassiivi teist elementi värskendatakse 'C++' väärtusega:
Näide 3: edastage massiiviviide alamprogrammi
Looge järgmise skriptiga Perli fail, kus alamprogrammi argumendina saadetakse massiivi viitemuutuja. Massiivi kolmanda indeksi väärtust värskendatakse alamprogrammi sees oleva viitemuutuja abil. Põhimassiivi väärtused trükitakse enne ja pärast võrdlusmuutuja kolmanda indeksi värskendamist, kasutades muutujat “dump”.
#!/usr/bin/perlkasutage ranget ;
kasutada hoiatused ;
kasuta 5.34.0 ;
kasuta Data::kallurit ;
#Deklareerige arvude massiiv
minu @ numbrid = ( 67 , 3. 4 , 90 , 12 , 39 ) ;
öelda 'Põhimassiivi väärtused enne värskendamist:' ;
printida Kallur \ @ numbrid ;
#Edasta massiiv viitena alamprogrammi
loe_massiiv ( \ @ numbrid ) ;
#Deklareeri alamprogramm massiivi väärtuse muutmiseks
alam read_massiiv
{
#Defineerige massiivi viitemuutuja
minu $arr_ref = $_ [ 0 ] ;
#Uuendage massiivi kolmandat elementi
$arr_ref- > [ 2 ] = 99 ;
}
öelda 'Põhimassiivi väärtused pärast värskendamist:' ;
printida Kallur \ @ numbrid ;
Väljund:
Pärast skripti täitmist ilmub järgmine väljund. Massiivi kolmas element oli 90 ja see väärtus muudetakse massiivi võrdlusmuutuja abil 99-ks. Algse massiivi kolmandat elementi värskendatakse samuti 99 võrra, kuna mõlemad muutujad jagavad sama asukohta:
Järeldus
Selles õpetuses on näidatud massiivi väärtustele juurdepääsu või nende värskendamise meetodid massiivi viitemuutuja loomise teel. Perli kasutajad saavad pärast selle õpetuse lugemist selge kontseptsiooni Perli massiivi viitemuutujate kasutamise kohta.