matriz de retorno de estructura en remix

Parece que hay muchas preguntas relacionadas, por ejemplo: aquí , pero todavía no puedo creer que no sea compatible con remix o ¿lo estoy malinterpretando? parece que es compatible con la producción.

struct Test {
    address receiver;
    string date;
} 

mapping(address => Test[]) public testInfo;

function getTestInfo(address _account) public constant returns (Test[]) {
    return testInfo[_account];
}

¿Hay alguna forma de ejecutar ese código y devolver una matriz de Test?

Respuestas (1)

Se ejecutará, sin embargo, la salida no se decodificará. Verá este mensaje en la consola:

failed to decode output: Error: Unsupported or invalid type: tuple

Iba a sugerir desestructurar y devolver dos matrices, sin embargo, hay una cadena en la estructura, que tampoco se puede devolver ya que la cadena es una matriz en sí misma. ¿Lo nombró datepara que tal vez pueda mantenerse en un uintcampo o tal vez en un bytes32campo? Si ese es el caso, entonces puedes hacer:

function getTestInfo(address _account) public constant returns (address[], bytes32[]) {

Es decir, devolver campos de estructura en matrices separadas y reestructurarlos en su front-end.

ok, ¿parece que se puede decodificar en un entorno de producción? y no estoy tan seguro de lo que quiso decir con devolver campos de estructura en matrices separadas. El tamaño es dinámico.
¿A qué te refieres con "entorno de producción"? Lo que quiero decir con destruir es supongamos que desea devolver 10 Pruebas. Devuelves 10 addresses y 10 bytes32s, llamémoslos receiversy dates. Cada elemento de esas matrices se establece en los campos respectivos de Testla matriz original, por ejemplo, receivers[0] == Tests[0].receivery dates[0] == Tests[0].date. Puede construir una Testsmatriz a partir de esta estructura en el front-end.
Gracias. Lo intenté a tu manera y funcionó. Pero usé bytes32 para las fechas, por ejemplo: 2018-01-31y lo que devuelve es la dirección. 0x323031382d30312d323800000000000000000000000000000000000000000000¿Qué se puede arreglar?
Esa no es una dirección, es la representación hexadecimal de la cadena '2018-01-31', puede buscar formas de convertirla. Si no es necesario conservar el formato, le sugiero que use uints para las fechas.
Muchas gracias. Espero no tener que pasar por un par de pasos más en el futuro.