什麼是constant variables?

更新 發佈閱讀 2 分鐘

在 Solidity 中,constant 變量用於定義不可變的常數值。這些常數在合約的生命週期內不會改變,並且它們的值必須在宣告時設定。使用 constant 關鍵字可以節省 gas,因為它們在編譯時就已經被嵌入到字節碼中,不需要在運行時讀取存儲。

用法

  1. 定義常數
    • 常數變量必須在宣告時初始化,並且一旦設置,就不能再修改。
    • 常數變量名稱通常使用大寫,以便與普通變量區分。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract Constants {
// 定義一個常數變量
uint256 public constant MY_CONSTANT = 123;
string public constant MY_STRING = "Hello, Solidity!";

// 該函數將返回常數變量的值
function getConstant() public pure returns (uint256) {
return MY_CONSTANT;
}

function getStringConstant() public pure returns (string memory) {
return MY_STRING;
}
}


  1. 使用常數
    • 常數變量可以在合約的任何地方使用,就像普通變量一樣。
    • 由於常數變量的值在編譯時就已確定,因此在使用時不會產生額外的存儲或讀取成本。

範例解釋

在上面的範例中:

  • MY_CONSTANT 是一個 uint256 類型的常數,其值為 123
  • MY_STRING 是一個 string 類型的常數,其值為 "Hello, Solidity!"
  • getConstant 函數返回 MY_CONSTANT 的值,getStringConstant 函數返回 MY_STRING 的值。

優點

使用 constant 變量有以下幾個優點:

  1. 節省 gas:由於常數變量在編譯時就已經確定,使用它們不需要在運行時讀取存儲中的數據,因此可以節省 gas。
  2. 提高可讀性:常數變量名稱通常有助於提高代碼的可讀性和可維護性,讓開發者更容易理解代碼的意圖。
  3. 減少錯誤:常數變量的不可變性可以防止意外修改,減少潛在的錯誤。

注意事項

  • 常數變量必須在聲明時初始化,且初始化後不能更改。
  • 常數變量的名稱通常使用大寫,以便與普通變量區分。

總結來說,在 Solidity 中使用 constant 變量是一種很好的編碼習慣,有助於提高合約的效率和安全性。

[Reference]

ChatGPT 3.5

留言
avatar-img
留言分享你的想法!
avatar-img
Follow the Rainmaker 🌧️
5會員
91內容數
尋大神腳印, 亦步亦趨。
2024/06/12
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
2024/06/12
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
2024/05/29
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
2024/05/29
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
2024/05/27
msg.sender 定義:msg.sender 是 Solidity 中的一個全局變量,表示當前調用合約函數的外部地址。這個地址可以是普通用戶賬戶(EOA)或另一個智能合約。 用途:用於識別誰在調用當前函數。在每次函數調用期間,msg.sender 都會動態地更新為當前調用該函數的賬戶地址。
2024/05/27
msg.sender 定義:msg.sender 是 Solidity 中的一個全局變量,表示當前調用合約函數的外部地址。這個地址可以是普通用戶賬戶(EOA)或另一個智能合約。 用途:用於識別誰在調用當前函數。在每次函數調用期間,msg.sender 都會動態地更新為當前調用該函數的賬戶地址。
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
Thumbnail
微積分是許多人的夢魘,但事實上卻是我們早已接觸過的知識,就像速度、距離和時間的關係一樣,一直以來都影響著我們的生活。 它教導了我們積極的生活態度,並且與許多生活面向息息相關,例如收入和儲蓄,個人成長策略和生活習慣。 這篇文章通過這些例子解釋了微積分的基本邏輯。
Thumbnail
微積分是許多人的夢魘,但事實上卻是我們早已接觸過的知識,就像速度、距離和時間的關係一樣,一直以來都影響著我們的生活。 它教導了我們積極的生活態度,並且與許多生活面向息息相關,例如收入和儲蓄,個人成長策略和生活習慣。 這篇文章通過這些例子解釋了微積分的基本邏輯。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News