summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAl <80943867+al-ias@users.noreply.github.com>2022-07-22 19:35:35 +0200
committerAl <80943867+al-ias@users.noreply.github.com>2022-07-22 19:45:20 +0200
commite108748836af5f795c99937062c72fac94993f50 (patch)
tree71e5786de681fc106c9ac2f8c4161873a997a15d
parenta94c428ff9442daaf9bd94f501a7d0b491f3cc3c (diff)
Translate function section (5.A)
-rw-r--r--it-it/solidity.html.markdown66
1 files changed, 66 insertions, 0 deletions
diff --git a/it-it/solidity.html.markdown b/it-it/solidity.html.markdown
index 5de6a652..a77f7d8c 100644
--- a/it-it/solidity.html.markdown
+++ b/it-it/solidity.html.markdown
@@ -445,4 +445,70 @@ block.gasLimit();
storage['abc'] = 'def'; // mappa da parole di 256 bit a parole di 256 bit
+// 4. FUNZIONI E ALTRO
+// A. Funzioni
+// Una semplice funzione
+function increment(uint x) returns (uint) {
+ x += 1;
+ return x;
+}
+
+// Le funzioni possono restituire molti valori,
+// e visto che i valori di ritorno vengono dichiarati prima
+// non è richiesta un'instruzione return esplicita
+function increment(uint x, uint y) returns (uint x, uint y) {
+ x += 1;
+ y += 1;
+}
+// Chiama la funzione di cui sopra
+uint (a,b) = increment(1,1);
+
+// 'view' (un alias di 'constant')
+// indica che la funzione non cambia / non può cambiare le variabili persistenti
+// Le funzioni definite con view vengono eseguite localmente, non sulla blockchain
+// N.B. la keyword constant sarà presto deprecata
+uint y = 1;
+
+function increment(uint x) view returns (uint x) {
+ x += 1;
+ y += 1; // questa riga fallirebbe
+ // y è una variabile di stato, e non può essere cambiata in una funzione di view
+}
+
+// 'pure' è più restrittivo di 'view' o 'constant', e non
+// permette nemmeno di leggere le varaibili di stato
+// In realtà è più complicato, per approfondire su
+// view/pure:
+// http://solidity.readthedocs.io/en/develop/contracts.html#view-functions
+
+// Modificatori di visibilità per le funzioni
+// Possono essere messi vicino a 'view' e includono:
+// public - visibile esternamente e internamente (di default per function)
+// external - visible solo esternamente (comprese le chiamate fatte con this.)
+// private - visibile slo dal contratto attuale
+// internal - visibile solo dal contratto attuale, e da quelli che ne derivano
+
+// Di solito è una buona idea marcare esplicitamente ogni funzione
+
+// Funzioni hoisted - e si può assegnare una funzione ad una variabile
+function a() {
+ var z = b;
+ b();
+}
+
+function b() {
+
+}
+
+// Tutte le funzioni che ricevono ether devono essere dichiarate come 'payable'
+function depositEther() public payable {
+ balances[msg.sender] += msg.value;
+}
+
+
+// I cicli sono da preferire alla ricorsione
+// (la profondità massima dello stack è 1024)
+// Inoltre, non impostare dei loop senza limiti,
+// perchè potresti reggiungere il limite per il gas
+
```