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를 하면 배열 길이를 늘리는 셈이니 오류가 나는 건 당연
'Solidity' 카테고리의 다른 글
여러개의 modifier 적용 시 순서 (2) | 2023.06.15 |
---|---|
솔리디티의 이상한 상속 계층구조 (0) | 2023.04.26 |
[오류 / Solidity] remixd : 이 시스템에서 스크립트를 실행할 수 없으므로 ... (0) | 2022.10.17 |