Solidity - ตัวสร้าง

Constructor เป็นฟังก์ชันพิเศษที่ประกาศโดยใช้ 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 {}
}
  • ไม่อนุญาตให้ใช้วิธีการเริ่มต้นตัวสร้างสัญญาพื้นฐานโดยตรงและโดยอ้อม

  • หากสัญญาที่ได้มาไม่ได้ส่งผ่านอาร์กิวเมนต์ไปยังผู้สร้างสัญญาพื้นฐานสัญญาที่ได้มาจะกลายเป็นนามธรรม