Solidity

初學者問題:solidity 結構中的變數是狀態變數還是局部變數?

  • November 3, 2022

我是剛接觸solidity的新手,只是有一個關於結構的快速問題:

struct structName {
   uint256 structNumber;
   string structString;
}

首先,我已經看到 structNumber 和 StructName 被稱為“成員”,我將它們稱為變數是錯誤的嗎?

其次,如果它們確實是變數,它們是局部變數還是狀態變數?

提前致謝。

structs 使您能夠創建具有多個屬性的數據類型。structs 基本上是變數的集合,可以是不同的數據類型。從這個意義上說,您可以將結構想像為由您(開發人員)定義的自定義數據類型中的一組相似變數。

在 a 中定義的變數struct也稱為各自的成員struct

如果你struct在你的合約中定義你的,它被視為狀態變數,但你也可以在你的合約之外聲明它並在另一個合約中導入它參見這裡的例子)。您也可以struct在函式中使用您的storage關鍵字,使用關鍵字直接訪問狀態,而memory關鍵字會將其複製到記憶體中

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract StructExample {

   // state
   struct Person {
       uint256 age;
       string name;
   }

   // accesses state variable directly
   function storageDemo() public {
       Person storage person;
       // your code here
   }

   // copies state variable to memory
   function memoryDemo() public {
       Person memory person;
       // your code here
   }
}

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