Solidity

[오류 / Solidity] 크기가 정해진 배열에 push

pangyoelon 2022. 11. 23. 22:01
uint256[3] public ageArray;

function agePush(uint256 age) public{
	ageArray.push(age);
}

위와 같은 상황에서 agePush를 실행하면 오류가 날 것이다!

물론 배열 크기를 지정하지 않았다면 오류가 안 난다

TypeError: Member "push" not found or not visible after argument-dependent lookup in uint256[10] storage ref. --> infrun/lec1.sol:8:9: | 8 | ageArray.push(_age); | ^^^^^^^^^^^^^

??? : 않이 크기는 지정했는데 아무것도 안 넣었거든여 빈 배열에 push 하는데 왜 오류가 남?

응 아니야, 크기를 미리 지정하면 배열에서는 내부적으로 모든 인덱스마다 기본값이 설정된다!

예를 들어, 크기가 3인 배열을 선언한다고 치면 내부적으로는

0 => 0, 1 => 0, 2 =>0

이런식으로 되있는 거시다.

여기에 push를 하면 배열 길이를 늘리는 셈이니 오류가 나는 건 당연