Tengo un contrato con el siguiente mapeo:
mapping (uint16 => uint256[]) public barLengthToBarIndexForSale;
¿Cuál es la mejor manera de recuperar la longitud de una matriz para una clave dada en la interfaz usando trufa?
Algo como esto...
barERC721Inst.barLengthToBarIndexForSale(5).length;
... parece no funcionar.
Usando una función adicional en mi contrato para recuperar la longitud...
function getBarLengthToBarIndexForSaleLength(uint16 _length) external view returns (uint) {
return barLengthToBarIndexForSale[_length].length;
}
... parece que tampoco funciona :(
Intenté llamarlo en la interfaz de esta manera:
barERC721Inst.barLengthToBarAmtForSale.call(5)
y
barERC721Inst.barLengthToBarAmtForSale(5)
ambos arrojan errores.
Cualquier ayuda es apreciada.
Podría simplemente escribir una función getter en su contrato que devuelva la longitud de la matriz. Asegúrate de hacerlo view
.
function getSize(uint16 key) public view returns (uint){
return barLengthToBarAmtForSale[5].length
}
si no es posible (el contrato ya está implementado), entonces podría "intentar" recorrer la matriz (no cuesta gasolina) hasta que obtenga un error. Esto es un poco sucio, pero debería funcionar.
Espero eso ayude.
buena vibración
_length
a_index
. Aparte de eso, deberá explicar qué es exactamente "parece que tampoco funciona".