728x90
function getFruitList() public returns(string[] memory){
string[] memory temp;
for(uint i=0; i<fruitList.length; i++){
if(keccak256(abi.encode(fruitList[i])) != keccak256(abi.encode(""))){
temp.push(fruitList);
}
fruitList = temp;
}
return fruitList;
}
위와 같이 function 안에서 길이를 설정해주지 않은 배열을 선언해주면 동적으로 길이가 늘어나지 않기 때문에 오류가 터졌다.
방법을 찾아보니 해결하는 방법은 두가지가 있다.
(1) 전역으로 배열 변수를 선언해서 push해주는 방법
(2) function내에서 배열을 선언할때 길이도 같이 선언해주는 방법
나는 후자를 선택했다.
function getFruitList() public returns(string[] memory){
string[] memory temp = new string[](fruitList.length);
for(uint i=0; i<fruitList.length; i++){
if(keccak256(abi.encode(fruitList[i])) != keccak256(abi.encode(""))){
temp.push(fruitList);
}
fruitList = temp;
}
return fruitList;
}
string배열에 배열의 길이를 정해준 새로운 배열을 할당해주면 된다.
728x90
'개인프로젝트 > ethFruitShop' 카테고리의 다른 글
[ethFruitShop] 중간 점검 (0) | 2022.12.05 |
---|---|
[React Error] JSON schema for a JavaScript project using TypeScript tooling (0) | 2022.12.02 |
[ethFruitShop] how to return mapping (0) | 2022.12.01 |
[Solidity Errror] uncaught (in promise) Error: Please pass numbers as strings or BN objects to avoid precision errors (0) | 2022.12.01 |