Tengo una función que devuelve múltiples valores.
En algunos lugares los uso todos, mientras que en otros lugares solo uso algunos de ellos.
Este breve fragmento puede ilustrar el problema:
contract A {
uint256 x;
uint256 y;
uint256 z;
uint256 w;
function getVars() external constant returns (uint256, uint256, uint256, uint256) {
return (x, y, z, w);
}
}
contract B {
A private a;
function func1() external {
var (x, y, z, w) = a.getVars();
// Do something with all variables (x, y, z, w)
}
function func2() external {
var (x, y, z, w) = a.getVars();
// Do something with only some variables (x, y)
}
}
Por lo cual, el compilador de Solidity me da las siguientes dos advertencias:
contracts/B.sol: Warning: Unused local variable.
var (x, y, z, w) = a.getVars();
^
contracts/B.sol: Warning: Unused local variable.
var (x, y, z, w) = a.getVars();
^
¿Cómo resolvería mejor este problema?
Por supuesto, podría simplemente "declararlos" explícitamente, por ejemplo:
function func2() external {
var (x, y, z, w) = a.getVars();
(w, z); // Avoid compilation warning
// Do something with only some variables (x, y)
}
Pero parece una solución bastante fea.
¿ Hay un indicador de compilación que pueda aplicar solo para este archivo específico ?
O idealmente, ¿hay algo "mejor" que pueda poner en el código para revocar esta advertencia?
Gracias.
Simplemente elimine la variable que está declarando, pero no use, por ejemplo
var (x, y,, w) = a.getVars();
Ahora que 'var' está en desuso, parece que simplemente puede eliminar la palabra clave var y agregar el tipo entre corchetes:
(uint256 x, uint256 y,, uint256 w) = a.getVars();
Parece funcionar para mi...
buena vibración
var
palabra clave en desuso en Solidity 0.4.21 y en adelante, después de reemplazarla conuint256
, su solución ya no funciona. ¿Alguna sugerencia? Gracias