Solidità - Costruttori

Constructor è una funzione speciale dichiarata utilizzando constructorparola chiave. È una funzione opzionale e viene utilizzata per inizializzare le variabili di stato di un contratto. Di seguito sono riportate le caratteristiche chiave di un costruttore.

  • Un contratto può avere un solo costruttore.

  • Un codice costruttore viene eseguito una volta quando viene creato un contratto e viene utilizzato per inizializzare lo stato del contratto.

  • Dopo l'esecuzione di un codice costruttore, il codice finale viene distribuito su blockchain. Questo codice include funzioni pubbliche e codice raggiungibile tramite funzioni pubbliche. Il codice del costruttore o qualsiasi metodo interno utilizzato solo dal costruttore non sono inclusi nel codice finale.

  • Un costruttore può essere pubblico o interno.

  • Un costruttore interno contrassegna il contratto come astratto.

  • Nel caso in cui non sia definito alcun costruttore, nel contratto è presente un costruttore predefinito.

pragma solidity ^0.5.0;

contract Test {
   constructor() public {}
}
  • Nel caso in cui il contratto base abbia un costruttore con argomenti, ogni contratto derivato deve passarli.

  • Il costruttore di base può essere inizializzato direttamente usando il modo seguente:

pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base (5) {
   constructor() public {}
}
  • Il costruttore di base può essere inizializzato indirettamente usando il modo seguente:

pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base {
   constructor(uint _info) Base(_info * _info) public {}
}
  • Non sono consentiti metodi diretti e indiretti per inizializzare il costruttore del contratto di base.

  • Se il contratto derivato non passa gli argomenti al costruttore del contratto di base, il contratto derivato diventerà astratto.