summaryrefslogtreecommitdiffhomepage
path: root/it-it
diff options
context:
space:
mode:
Diffstat (limited to 'it-it')
-rw-r--r--it-it/solidity.html.markdown56
1 files changed, 56 insertions, 0 deletions
diff --git a/it-it/solidity.html.markdown b/it-it/solidity.html.markdown
index e396eeb2..eb46301e 100644
--- a/it-it/solidity.html.markdown
+++ b/it-it/solidity.html.markdown
@@ -608,4 +608,60 @@ for(uint x = 0; x < refundAddressList.length; x++) {
// Ad es. preferire pull payments ai push payment
+// 7. OGGETTI/CONTRATTI
+
+// A. Invocare un contratto esterno
+contract InfoFeed {
+ function info() payable returns (uint ret) { return 42; }
+}
+
+contract Consumer {
+ InfoFeed feed; // punta ad un contratto sulla blockchain
+
+ // Imposta il feed sull'istanza del contratto esistente
+ function setFeed(address addr) {
+ // fare attenzione alla conversione di tipo automatica;
+ // il costruttore non viene invocato
+ feed = InfoFeed(addr);
+ }
+
+ // Imposta il feed ad una nuova istanza del contratto
+ function createNewFeed() {
+ feed = new InfoFeed(); // viene creata una nuova istanza;
+ // viene invocato il costruttore
+ }
+
+ function callFeed() {
+ // le parentesi finali invocano il contratto, opzionalmente si può
+ // specificare un importo custom di ether o di gas
+ feed.info.value(10).gas(800)();
+ }
+}
+
+// B. ereditarietà
+
+// Conta l'ordine, l'ultimo contratto ereditato (es. 'def') può andare
+// in overriding su parti dei contratti precedentemente ereditati
+contract MyContract is abc, def("a custom argument to def") {
+
+// Funzione in overriding
+ function z() {
+ if (msg.sender == owner) {
+ def.z(); // invoca la funzione overridden da def
+ super.z(); // chiama la funzione overridden del padre
+ }
+ }
+}
+
+// Funzioni astratte
+function someAbstractFunction(uint x);
+// non possono essere compilate, vengono usate nei contratti base/astratti
+// e poi verranno implementate
+
+// C. Import
+
+import "filename";
+import "github.com/ethereum/dapp-bin/library/iterable_mapping.sol";
+
+
```