Parece que no puedo inicializar una estructura que contiene una matriz de cadenas. Esto es lo que probé:
contract testStruct {
struct stru{
string[] s;
}
stru myStru;
/*
function add(string s) {
string[] strAr; // Uninitialized storage pointer. Did you mean ' memory strAr'?
strAr.push(s);
myStru = stru(strAr);
}
*/
function add(string s) {
string[] memory strAr; // just doesnt do anything, exception?
strAr[0] = s;
myStru = stru(strAr);
}
function getFirst(uint i) constant returns (string s) {
s = myStru.s[0];
}
}
La primera versión (comentada) me da la advertencia del compilador y no parece escribir nada en el almacenamiento. El segundo parece encontrarse con una excepción (supongo que mirando el consumo de gas). Por lo tanto, mi pregunta es: ¿Cómo inicializo una estructura que contiene una matriz de cadenas?
La otra respuesta que no funcionó me puso en camino para descubrirlo yo mismo:
contract testStruct {
struct stru{
string[] s;
}
stru myStru;
function add(string s) {
myStru.s.push(s);
}
function getAt(uint256 i) constant returns (string s) {
s = myStru.s[i];
}
}
Pruebe este enfoque. Cree la estructura, luego agréguela a la matriz:
stru sStruct = stru();
sStruct.s.push('hello');
Wrong argument count for function call: 0 arguments given but expected 1. stru sStruct = stru();
pero me encaminaste, ¡gracias!
nadison
myStru
a la nuevasStruct
. Lo siguiente también funcionarástru sStruct;
. O para ser explícito, está creando una nueva variable de almacenamiento para la estructurastru storage newStru;
SCBuergel