#solidity
Вопрос:
Это компилируется нормально, но при вызове «дома» я получаю следующую ошибку:
Ошибка: недопустимая строка BigNumber (аргумент=»значение», значение=»», код=INVALID_ARGUMENT, версия=bignumber/5.4.1)
кто-нибудь знает, почему? Спасибо!
pragma solidity ^0.8.4;
contract Test {
uint[] public house = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function sugMa() public view returns (uint) {
uint even = 0;
for (uint i = 0; i <= house.length; i ) {
if (i % 2 == 0) {
even = 1;
}
}
return even;
}
}
Ответ №1:
Ошибка возникает, когда вы вызываете house()
автоматически сгенерированную функцию получения без указания параметра.
Это house
одномерный массив, поэтому вам нужно выбрать, к какому индексу вы хотите получить доступ.
В настоящее время Solidity (версия 0.8) не поддерживает вызов всего массива из автоматически сгенерированной функции получения. Но — вы можете создать свою собственную функцию, которая возвращает весь массив.
function getHouse() external view returns (uint[] memory) {
return house;
}
Затем он возвращается
uint256[]: 1,2,3,4,5,6,7,8,9,10