Perl/Variabili scalari: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 330:
Infatti esistono delle forme contratte che "semplificano" la stesura del codice lasciandolo più pulito:
 
+= somma numerica
-= sottrazione numerica
*= moltiplicazione numerica
/= divisione numerica
%= modulo numerico
**= elevamento numerica
.= congiunzione stringa
 
Queste espressioni non fanno altro che fare l'operazione espressa daldai primocaratteri carattereprima dell "=" (es + somma, - sottrazione, . concatemento, * moltiplicazione etc) sulla variabile stessa con il dato di destra.
Vediamo un esempio che chiarisce molto:
Vediaomo nel dettaglio.
L'espressione
$a += 30$b;
viene "espansa" nella sua equivalente:
 
$a = 30$a + $b;
=== Assegnamento con += ===
Questo tipo di assegnamento "somma numerica" somma alla variabile a sinistra, il valore di ciò che sta a destra.
e così tutte le altre:
Un esempio è meglio delle parole:
$a -= 5$b; # ora $a è uguale= $a 25- $b;
$a *= 5$b; # ora $a è uguale= $a 150* $b;
$a /= $b; $a = $a / $b;
$a %= $b; $a = $a % $b;
$a **= $b; $a = $a ** $b;
$a .= $b; $a = $a . $b;
 
Vediamo ora degli esempi con dei valori:
$a = 30;
$a += 5; # ora $a è uguale a 35
$a = 3032;
$ab = 305;
$a += $b; # ora $a è uguale a 37 ( 32 + 5 )
$a .-= 5$b; # ora $a è uguale a "ciao5"32 ( 37 - 5 )
$a .*= 5$b; # ora $a è uguale a "305"160 ( 32 * 5 )
$a /= $b; # ora $a è uguale a 32 ( 160 / 5 )
$a %= $b; # ora $a è uguale a 2 ( resto di 32 / 5)
$a **= $b; # ora $a è uguale a 64 ( 2 alla quinta )
$a .= $b; # ora $a è uguale a '645' ( '64' . '5' )
 
Quindi l'operatore += trasforma l'espressione $a += 5; nella equivalente $a = $a + 5;
E con le stringhe ?
Un esempio è meglio delle parole:
 
$a = "ciao"; # nota in numero 0
$ab = "ciao"5;
$a += 5; # ora $a è uguale a 5 infatti "ciao" = 0
 
cioè $a l'espressione+= precedente$b; viene "tradotta"# inora $a =è "ciao"uguale +a 5 , quindi $a =( 0 + 5 )
$a +-= 5$b; # ora $a è uguale a 350 ( 5 - 5 )
 
$a +*= 5$b; # ora $a è uguale a 50 infatti "ciao" = ( 0 * 5 )
=== Assegnamento con -= ===
$a */= 5$b; # ora $a è uguale a 0 infatti "ciao" = ( 0 / 5 )
Questo tipo di assegnamento "sottrazione numerica" sottrae alla variabile a sinistra, il valore di ciò che sta a destra.
$a -%= 5$b; # ora $a è uguale a -50 infatti "ciao" = (resto di 0 / 5)
Un esempio è meglio delle parole:
$a **= $b; # ora $a è uguale a 0 ( 0 alla quinta )
 
$a .= $b; # ora $a è uguale a '05' ( '0' . '5' )
$a = 30;
$a -= 5; # ora $a è uguale a 25
 
Quindi l'operatore -= trasforma l'espressione $a -= 5; nella equivalente $a = $a - 5;
E con le stringhe ?
Un esempio è meglio delle parole:
 
$a = "ciao";
$a -= 5; # ora $a è uguale a -5 infatti "ciao" = 0
 
cioè l'espressione precedente viene "tradotta" in $a = "ciao" - 5 , quindi $a = 0 - 5
 
=== Assegnamento con *= ===
Questo tipo di assegnamento "moltiplicazione numerica" moltiplica alla variabile a sinistra, il valore di ciò che sta a destra.
Un esempio è meglio delle parole:
 
$a = 30;
$a *= 5; # ora $a è uguale a 150
 
Quindi l'operatore *= trasforma l'espressione $a *= 5; nella equivalente $a = $a * 5;
E con le stringhe ?
Un esempio è meglio delle parole:
 
$a = "ciao";
$a *= 5; # ora $a è uguale a 0 infatti "ciao" = 0
 
cioè l'espressione precedente viene "tradotta" in $a = "ciao" * 5 , quindi $a = 0 * 5
 
=== Assegnamento con .= ===
Questo tipo di assegnamento "concatenamento stringa" aggiunge alla variabile a sinistra, il valore di ciò che sta a destra in modo stringa.
Un esempio è meglio delle parole:
 
$a = "ciao";
$a .= 5; # ora $a è uguale a "ciao5"
 
E con i numeri ?
Un esempio è meglio delle parole:
 
$a = 30;
$a .= 5; # ora $a è uguale a "305"
 
Quindi l'operatore .= trasforma l'espressione $a .= 5; nella equivalente $a = $a . 5; Quindi '30'.'5' => '305'
 
=Riassunto=