Solo estoy tratando de obtener confirmación de si esto es compatible con Solidity actualmente. Las respuestas anteriores a esta pregunta parecen implicar que esto se ha agregado, pero no puedo encontrar ninguna literatura concreta para confirmar.
Si tengo una estructura dentro del contrato, ¿puedo devolverla a través de un getter en el contrato? Por ejemplo:
struct myDetails {
string firstName;
string lastName;
}
function getName() returns (???) {
return myName;
}
Gracias
marty
Actualmente no es posible devolver una estructura al exterior con su propia función. No obstante, es posible con los captadores generados automáticamente de Solidity.
Al marcar una variable public
(por ejemplo uint public someNumber
), Solidity generará automáticamente un getter ( someContract.someNumber()
). ¡ Esto de hecho funcionará en estructuras ( Foo public someFoo
) e incluso en matrices y asignaciones! ( mapping(uint => player) public players
) En el último caso, proporciona una clave al getter para obtener el que desea. ( someContract.players(7)
)
Una advertencia: los captadores actualmente no devuelven estructuras anidadas, matrices y asignaciones dentro de estructuras. Las cadenas, sin embargo, lo son.
en los repositorios oficiales no hay ninguna indicación sobre permitir una devolución del tipo de estructura. consulte https://github.com/ethereum/solidity/releases
Le sugiero que use el retorno múltiple para su función getName.
function getName() returns (string,string) {
string firstName;
string lastName;
return (firstName, lastName);
}
Ajoy Bhatia
mapping(uint => player) public players
, el tipo de valorplayer
parece ser un tipo definido por el usuario, es decir, no primitivo. Entonces supongo que sería alguna estructura o mapeo. Entonces, sisomeContract.players(7)
devuelve unplayer
, ¿significa eso que las estructuras dentro de las asignaciones pueden devolverse aunque las asignaciones dentro de las estructuras no pueden (lo que menciona en la advertencia más adelante)?Mateo Schmidt
Roy