Solidity - ฟังก์ชั่นบริสุทธิ์
ฟังก์ชั่นบริสุทธิ์ช่วยให้แน่ใจว่าพวกเขาไม่อ่านหรือแก้ไขสถานะ สามารถประกาศฟังก์ชันเป็นไฟล์pure. ข้อความต่อไปนี้หากมีอยู่ในฟังก์ชันจะถือว่าอ่านสถานะและคอมไพเลอร์จะส่งคำเตือนในกรณีดังกล่าว
การอ่านตัวแปรสถานะ
การเข้าถึงที่อยู่ (นี้) .balance หรือ <address> .balance
การเข้าถึงตัวแปรพิเศษของ block, tx, msg (สามารถอ่าน msg.sig และ msg.data ได้)
การเรียกใช้ฟังก์ชันใด ๆ ที่ไม่ได้ทำเครื่องหมายว่าบริสุทธิ์
การใช้แอสเซมบลีแบบอินไลน์ที่มี opcodes บางอย่าง
ฟังก์ชัน Pure สามารถใช้ฟังก์ชัน revert () และ require () เพื่อย้อนกลับการเปลี่ยนแปลงสถานะที่อาจเกิดขึ้นหากเกิดข้อผิดพลาด
ดูตัวอย่างด้านล่างโดยใช้ฟังก์ชันมุมมอง
ตัวอย่าง
pragma solidity ^0.5.0;
contract Test {
function getResult() public pure returns(uint product, uint sum){
uint a = 1;
uint b = 2;
product = a * b;
sum = a + b;
}
}
รันโปรแกรมข้างต้นโดยใช้ขั้นตอนที่ให้ไว้ในบทSolidity First Application
เอาต์พุต
0: uint256: product 2
1: uint256: sum 3