Solidity

無法從 Solidity 中的 Struct 檢索 uint 數組

  • January 10, 2022

我的契約中有以下結構

struct Transaction {
   TransactionType transactionType;
   uint256 id;
   uint256 productId;
   uint256 timestamp;
   address from;
   address to;
   uint256[] source;
   uint256 test;
}

然後我像這樣初始化

uint256[] memory source = new uint256[](1);
source[0] = 55;
Transaction memory transaction = Transaction(*other params*, source, 999);

在我讓上面的程式碼執行並在調試器中檢查事務的測試中,它如下所示:

在此處輸入圖像描述

該對象應該包含 8 個元素,但只顯示了 7 個。在索引 4/5 處的地址欄位之後是 uint 欄位test

數組場怎麼了?

當您嘗試返回結構數據時,不會返回作為結構一部分的引用類型(數組、映射、結構)。您會注意到只返回值類型。

您應該創建一個函式來充當 getter,該函式將訪問您需要的數據並將其返回。

對於您的範例:

function getSources(uint transactionId) external returns (uint[] memory sources) {
     sources = transactions[transactionId].sources; // In case you have array of transactions
}

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