Solidity - สัญญา
Contract in Solidity คล้ายกับ Class ใน C ++ สัญญามีคุณสมบัติดังต่อไปนี้
Constructor - ฟังก์ชันพิเศษที่ประกาศด้วยคีย์เวิร์ดตัวสร้างซึ่งจะดำเนินการหนึ่งครั้งต่อสัญญาและจะถูกเรียกใช้เมื่อมีการสร้างสัญญา
State Variables - ตัวแปรต่อสัญญาเพื่อจัดเก็บสถานะของสัญญา
Functions - ฟังก์ชั่นต่อสัญญาซึ่งสามารถปรับเปลี่ยนตัวแปรสถานะเพื่อเปลี่ยนสถานะของสัญญาได้
ปริมาณการมองเห็น
ต่อไปนี้เป็นตัวระบุการมองเห็นต่างๆสำหรับฟังก์ชัน / ตัวแปรสถานะของสัญญา
external- ฟังก์ชันภายนอกหมายถึงการเรียกใช้โดยสัญญาอื่น ๆ ไม่สามารถใช้สำหรับการโทรภายใน ในการเรียกใช้ฟังก์ชันภายนอกภายในสัญญานี้จำเป็นต้องมีการเรียก function_name () ไม่สามารถทำเครื่องหมายตัวแปรสถานะเป็นภายนอกได้
public- ฟังก์ชันสาธารณะ / ตัวแปรสามารถใช้ได้ทั้งภายนอกและภายใน สำหรับตัวแปร public state Solidity จะสร้างฟังก์ชัน getter โดยอัตโนมัติ
internal - ฟังก์ชันภายใน / ตัวแปรสามารถใช้ได้เฉพาะภายในหรือโดยสัญญาที่ได้รับ
private - ฟังก์ชันส่วนตัว / ตัวแปรสามารถใช้ได้เฉพาะภายในและไม่สามารถใช้ได้แม้กระทั่งสัญญาที่ได้รับ
ตัวอย่าง
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//External Contract
contract D {
function readData() public returns(uint) {
C c = new C();
c.updateData(7);
return c.getData();
}
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
รันโปรแกรมข้างต้นโดยใช้ขั้นตอนที่ให้ไว้ในบทSolidity First Application เรียกใช้วิธีการต่างๆของสัญญา สำหรับ E.getComputedResult () ตามด้วย E.getResult () แสดง -
เอาต์พุต
0: uint256: 8