什麼是constant variables?

什麼是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
Follow the Rainmaker 🌧️
5會員
91內容數
尋大神腳印, 亦步亦趨。
留言
avatar-img
留言分享你的想法!
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
msg.sender 定義:msg.sender 是 Solidity 中的一個全局變量,表示當前調用合約函數的外部地址。這個地址可以是普通用戶賬戶(EOA)或另一個智能合約。 用途:用於識別誰在調用當前函數。在每次函數調用期間,msg.sender 都會動態地更新為當前調用該函數的賬戶地址。
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
msg.sender 定義:msg.sender 是 Solidity 中的一個全局變量,表示當前調用合約函數的外部地址。這個地址可以是普通用戶賬戶(EOA)或另一個智能合約。 用途:用於識別誰在調用當前函數。在每次函數調用期間,msg.sender 都會動態地更新為當前調用該函數的賬戶地址。