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