Solidity - ตัวแปร
Solidity รองรับตัวแปรสามประเภท
State Variables - ตัวแปรที่มีการจัดเก็บค่าอย่างถาวรในที่เก็บสัญญา
Local Variables - ตัวแปรที่มีค่าอยู่จนถึงฟังก์ชันกำลังดำเนินการ
Global Variables - ตัวแปรพิเศษมีอยู่ในเนมสเปซทั่วโลกที่ใช้รับข้อมูลเกี่ยวกับบล็อกเชน
Solidity เป็นภาษาที่พิมพ์แบบคงที่ซึ่งหมายความว่าจำเป็นต้องระบุสถานะหรือประเภทตัวแปรโลคัลระหว่างการประกาศ ตัวแปรที่ประกาศแต่ละตัวจะมีค่าเริ่มต้นตามประเภทเสมอ ไม่มีแนวคิด "ไม่ได้กำหนด" หรือ "ว่าง"
ตัวแปรสถานะ
ตัวแปรที่มีค่าถูกเก็บไว้อย่างถาวรในที่เก็บสัญญา
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10; // Using State variable
}
}
ตัวแปรท้องถิ่น
ตัวแปรที่มีค่าพร้อมใช้งานภายในฟังก์ชันที่กำหนดไว้เท่านั้น พารามิเตอร์ของฟังก์ชันจะอยู่ในพื้นที่ของฟังก์ชันนั้นเสมอ
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return result; //access the local variable
}
}
ตัวอย่าง
pragma solidity ^0.5.0;
contract SolidityTest {
uint storedData; // State variable
constructor() public {
storedData = 10;
}
function getResult() public view returns(uint){
uint a = 1; // local variable
uint b = 2;
uint result = a + b;
return storedData; //access the state variable
}
}
เรียกใช้โปรแกรมข้างต้นโดยใช้ขั้นตอนที่ให้ไว้ในบทSolidity First Application
เอาต์พุต
0: uint256: 10
ตัวแปรส่วนกลาง
ตัวแปรเหล่านี้เป็นตัวแปรพิเศษที่มีอยู่ในพื้นที่ทำงานทั่วโลกและให้ข้อมูลเกี่ยวกับคุณสมบัติบล็อกเชนและธุรกรรม
ชื่อ | ผลตอบแทน |
---|---|
blockhash (uint blockNumber) ส่งกลับ (bytes32) | แฮชของบล็อกที่กำหนด - ใช้ได้เฉพาะกับ 256 บล็อกล่าสุดไม่รวมบล็อกปัจจุบัน |
block.coinbase (ที่อยู่ที่ต้องชำระ) | ที่อยู่ของคนงานเหมืองบล็อกปัจจุบัน |
block.difficulty (uint) | ความยากของบล็อกปัจจุบัน |
block.gaslimit (uint) | แก๊สลิมิตบล็อกปัจจุบัน |
block.number (uint) | หมายเลขบล็อกปัจจุบัน |
block.timestamp (uint) | การประทับเวลาบล็อกปัจจุบันเป็นวินาทีนับตั้งแต่ยุคยูนิกซ์ |
gasleft () ส่งคืน (uint256) | ก๊าซที่เหลืออยู่ |
msg.data (ไบต์ calldata) | กรอก calldata |
msg.sender (ที่อยู่เจ้าหนี้) | ผู้ส่งข้อความ (ผู้โทรปัจจุบัน) |
msg.sig (ไบต์ 4) | สี่ไบต์แรกของ calldata (ตัวระบุฟังก์ชัน) |
msg.value (uint) | จำนวน wei ที่ส่งมาพร้อมข้อความ |
ตอนนี้ (uint) | การประทับเวลาบล็อกปัจจุบัน |
tx.gasprice (uint) | ราคาก๊าซของธุรกรรม |
tx.origin (ที่อยู่ที่ต้องชำระ) | ผู้ส่งธุรกรรม |
ชื่อตัวแปร Solidity
ในขณะที่ตั้งชื่อตัวแปรของคุณใน Solidity โปรดคำนึงถึงกฎต่อไปนี้
คุณไม่ควรใช้คีย์เวิร์ดที่สงวนไว้สำหรับ Solidity เป็นชื่อตัวแปร คำหลักเหล่านี้จะกล่าวถึงในส่วนถัดไป ตัวอย่างเช่นชื่อตัวแปรเบรกหรือบูลีนไม่ถูกต้อง
ชื่อตัวแปร Solidity ไม่ควรขึ้นต้นด้วยตัวเลข (0-9) ต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่าง ตัวอย่างเช่น 123test เป็นชื่อตัวแปรที่ไม่ถูกต้อง แต่ _123test เป็นชื่อที่ถูกต้อง
ชื่อตัวแปร Solidity คำนึงถึงขนาดตัวพิมพ์ ตัวอย่างเช่นชื่อและชื่อเป็นตัวแปรสองตัวที่แตกต่างกัน