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