Si establezco los valores de una matriz de la siguiente manera, ¿estoy equivocado?
uint256 n = 0;
bytes32[n] example;
function getArraySize(uint256 arraySize) public returns(uint256 size) {
size = arraySize;
return size;
}
n = getArraySize(3);
example[n] = [bytes32("value_1"),bytes32("value_2"),bytes32("value_3")];
Obtengo " parser error: expected identifier
" n = getArraySize(3);
pero no sé qué está mal.
Nota : Esta pregunta está relacionada con otra pregunta (el enlace a continuación) donde en su respuesta en la nota número 2, se menciona que en caso de definir una matriz con tamaño dinámico, no es posible establecer valores de esa matriz como este:
newObject(100, 3, [bytes32("location"),bytes32("price"),bytes32("sold")], [bytes32("Paris"),bytes32("50"),bytes32("yes")], address(0xE07b6e5a2026CC916A4E2Beb03767ae0ED6af773);
Enlace de pregunta relacionada: Argumento de codificación de error (remix)
Su código tiene muchos problemas. En primer lugar, la forma en que está asignando el tamaño de la matriz daría como resultado 0, ya que n
comienza como 0, el tamaño de la matriz sería 0. En su lugar, bytes32[] example;
sería suficiente crear una matriz dinámica. El siguiente problema es que está tratando de usar n = getArraySize(3); example[n] = [bytes32("value_1"),bytes32("value_2"),bytes32("value_3")];
fuera de una función que no es posible con la solidez. Para solucionar esto, debe envolver una función alrededor del código. Luego puede usar example.push("value_1");
ect para insertar en la matriz. lo que hace que el uso de getArraySize y n sea irrelevante.
example.push("value_1"); example.push("value_2"); example.push("value_3");
buena vibración
Preguntador