Solidity - 建構函式



建構函式是一個使用constructor關鍵字宣告的特殊函式。它是一個可選函式,用於初始化合約的狀態變數。以下是建構函式的關鍵特性。

  • 一個合約只能有一個建構函式。

  • 建構函式程式碼在建立合約時執行一次,用於初始化合約狀態。

  • 建構函式程式碼執行後,最終程式碼將部署到區塊鏈。此程式碼包括公共函式和可透過公共函式訪問的程式碼。建構函式程式碼或僅由建構函式使用的任何內部方法不包含在最終程式碼中。

  • 建構函式可以是公共的或內部的。

  • 內部建構函式將合約標記為抽象合約。

  • 如果沒有定義建構函式,則合約中存在一個預設建構函式。

pragma solidity ^0.5.0;

contract Test {
   constructor() public {}
}
  • 如果基類合約的建構函式帶有引數,則每個派生合約都必須傳遞它們。

  • 可以使用以下方式直接初始化基類建構函式:

pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base (5) {
   constructor() public {}
}
  • 可以使用以下方式間接初始化基類建構函式:

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 {}
}
  • 不允許同時使用直接和間接方式初始化基類合約建構函式。

  • 如果派生合約未向基類合約建構函式傳遞引數,則派生合約將成為抽象合約。

廣告
© . All rights reserved.