Solidity
無法從 Solidity 中的 Struct 檢索 uint 數組
我的契約中有以下結構
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 }