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.