Solidity
插入結構內的數組時出現問題
我在以下智能合約中有問題。
我定義了一個包含字元串數組的結構。我已經為這個結構定義了一個映射。
struct Stonedetails { uint stoneweight; string stoneimagehash; string stoneidbywholesaledealer; string[] stoneidsbycutter; } mapping (uint=>Stonedetails) public stonedetailsTable;
我通過傳遞參數使用函式內部的以下方法將值儲存在 struct 中。
stonedetailsTable[stoneid].stoneweight =stoneweight; stonedetailsTable[stoneid].stoneimagehash =stoneimagehash; stonedetailsTable[stoneid].stoneidbywholesaledealer =stoneidbywholesaledealer;
如何將值儲存在字元串數組中?這是一個一個儲存值的方法嗎?
stonedetailsTable[stoneid1].stoneidsbycutter.push(stoneidbycuttervalue);
如何使用stoneidsbycutter.length 找到數組的長度?
您的程式碼看起來正確。我測試了以下內容並按預期得到了 1 的長度:
pragma solidity ^0.4.17; contract Test { struct Stonedetails { uint stoneweight; string stoneimagehash; string stoneidbywholesaledealer; string[] stoneidsbycutter; } mapping (uint=>Stonedetails) public stonedetailsTable; function Test() public { stonedetailsTable[0].stoneidsbycutter.push("hello"); } function getLength() public constant returns (uint256) { return stonedetailsTable[0].stoneidsbycutter.length; // returns 1 } }