- Solidity 教程
- Solidity - 首頁
- Solidity - 概述
- Solidity - 環境搭建
- Solidity - 基本語法
- Solidity - 第一個應用
- Solidity - 註釋
- Solidity - 資料型別
- Solidity - 變數
- Solidity - 變數作用域
- Solidity - 運算子
- Solidity - 迴圈
- Solidity - 條件語句
- Solidity - 字串
- Solidity - 陣列
- Solidity - 列舉
- Solidity - 結構體
- Solidity - 對映
- Solidity - 型別轉換
- Solidity - 以太幣單位
- Solidity - 特殊變數
- Solidity - 樣式指南
- Solidity 函式
- Solidity - 函式
- Solidity - 函式修飾符
- Solidity - view 函式
- Solidity - pure 函式
- Solidity - 回退函式 (Fallback Function)
- 函式過載
- 數學函式
- 加密函式
- Solidity 常用模式
- Solidity - 提款模式
- Solidity - 訪問限制
- Solidity 高階
- Solidity - 合約
- Solidity - 繼承
- Solidity - 建構函式
- Solidity - 抽象合約
- Solidity - 介面
- Solidity - 庫
- Solidity - 彙編
- Solidity - 事件
- Solidity - 錯誤處理
- Solidity 有用資源
- Solidity - 快速指南
- Solidity - 有用資源
- Solidity - 討論
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 第一個應用章節中提供的步驟執行上述程式。
輸出
0: uint256: 10
全域性變數
這些是存在於全域性工作區中的特殊變數,它們提供有關區塊鏈和交易屬性的資訊。
| 名稱 | 返回值 |
|---|---|
| blockhash(uint blockNumber) returns (bytes32) | 給定區塊的雜湊值 - 僅適用於最近的 256 個區塊(不包括當前區塊) |
| block.coinbase (address payable) | 當前區塊礦工的地址 |
| block.difficulty (uint) | 當前區塊難度 |
| block.gaslimit (uint) | 當前區塊 gas 限制 |
| block.number (uint) | 當前區塊編號 |
| block.timestamp (uint) | 自 Unix 紀元以來的當前區塊時間戳(以秒為單位) |
| gasleft() returns (uint256) | 剩餘 gas |
| msg.data (bytes calldata) | 完整的 calldata |
| msg.sender (address payable) | 訊息傳送者(當前呼叫者) |
| msg.sig (bytes4) | calldata 的前四個位元組(函式識別符號) |
| msg.value (uint) | 隨訊息傳送的 wei 數 |
| now (uint) | 當前區塊時間戳 |
| tx.gasprice (uint) | 交易的 gas 價格 |
| tx.origin (address payable) | 交易傳送者 |
Solidity 變數命名
在 Solidity 中命名變數時,請記住以下規則。
您不應使用任何 Solidity 保留關鍵字作為變數名。這些關鍵字將在下一節中提及。例如,break 或 boolean 變數名無效。
Solidity 變數名不能以數字 (0-9) 開頭。它們必須以字母或下劃線開頭。例如,123test 是無效的變數名,但 _123test 是有效的變數名。
Solidity 變數名稱區分大小寫。例如,Name 和 name 是兩個不同的變數。
廣告