Solidity

插入結構內的數組時出現問題

  • September 28, 2017

我在以下智能合約中有問題。

我定義了一個包含字元串數組的結構。我已經為這個結構定義了一個映射。

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
   }
}

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