Tengo un problema en el siguiente contrato inteligente.
He definido una estructura que incluye una matriz de cadenas. Y he definido un mapeo para esta estructura.
struct Stonedetails {
uint stoneweight;
string stoneimagehash;
string stoneidbywholesaledealer;
string[] stoneidsbycutter;
}
mapping (uint=>Stonedetails) public stonedetailsTable;
He almacenado los valores en la estructura usando los siguientes métodos dentro de una función pasando parámetros.
stonedetailsTable[stoneid].stoneweight =stoneweight;
stonedetailsTable[stoneid].stoneimagehash =stoneimagehash;
stonedetailsTable[stoneid].stoneidbywholesaledealer =stoneidbywholesaledealer;
¿Cómo puedo almacenar los valores en una matriz de cadenas? ¿Es la forma de almacenar los valores uno por uno?
stonedetailsTable[stoneid1].stoneidsbycutter.push(stoneidbycuttervalue);
¿Cómo puedo encontrar la longitud de la matriz usando stoneidsbycutter.length?
Su código parece correcto. Probé lo siguiente y obtuve una longitud de 1 como se esperaba:
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
}
}
usuario19510
stonedetailsTable[stoneid].stoneidsbycutter.length
funcionando?crissi mariam robert
usuario19510
push
seguido de marcar ellength
.)