У меня проблема в следующем смарт-контракте.
Я определил структуру, которая включает в себя массив строк. И я определил сопоставление для этой структуры.
struct Stonedetails {
uint stoneweight;
string stoneimagehash;
string stoneidbywholesaledealer;
string[] stoneidsbycutter;
}
mapping (uint=>Stonedetails) public stonedetailsTable;
Я сохранил значения в структуре, используя следующие методы внутри функции, передав параметры.
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
}
}
пользователь19510
stonedetailsTable[stoneid].stoneidsbycutter.length
работает?Крисси Мариам Роберт
пользователь19510
push
с последующей проверкойlength
.)