Solidity

Solidity 中的不可變關鍵字是什麼?

  • April 7, 2020

Solidity中的immutable關鍵字是什麼,如何使用它?

immutable關鍵字在 0.6.5 中添加到 Solidity。

**狀態變數可以被標記immutable,這使得它們是只讀的,但可以在建構子中賦值。**該值將直接儲存在程式碼中。

文件

聲明為不可變的變數比聲明為常量的限制要少一些:不可變變數可以在合約的建構子中或在它們聲明時被分配一個任意值。它們在建構期間無法讀取,只能分配一次。

範常式式碼片段如下:

pragma solidity ^0.6.5;

contract TestImmutable {
   uint256 public immutable a;

   // This is a valid constructor
   constructor (uint256 _a) public {
       a = _a;
   }

   // This is invalid and will not compile
   function setA (uint256 _a) public {
       a = _a;
   }
}

重要的是要注意,編譯器生成的合約創建程式碼將在返回之前修改合約的執行時程式碼,方法是將所有對不可變對象的引用替換為分配給它們的值。如果您將編譯器生成的執行時程式碼與實際儲存在區塊鏈中的執行時程式碼進行比較,這一點很重要。

引用自:https://ethereum.stackexchange.com/questions/82240