크립토 좀비 풀어보다가 헷갈려서 찾아봤다.
파이썬 공부하면서도 나오는 개념이었던 거 같은데.. 맨날 까먹는다..🥲
괜찮다. 까먹을 때마다 와서 보면 된다.
A(initial value)로 B를 만든다고 하자.
By Value
- B는 A의 새로운 복사본이다.
- B를 수정한다고 해서 초깃값 A가 변하지는 않는다.
ex) Assigning storage to memory
uint[] storage A = [1, 2, 3];
uint[] memory B = A; // value of A is copied over to B
// modifying B will not change A
By Reference
- B는 단순히 A가 저장된 곳을 가리킨다.(포인터 역할)
- A의 새로운 복사본은 생성되지 않는다.
- B를 수정하면 초깃값 A도 함께 바뀐다,
ex)Assigning memory to memory OR storage to storage.(This case is storage to storage)
uint[] storage A = [1, 2, 3];
uint[] storage B = A; // [1, 2, 3]
B.push(9); // both point to same array of [1, 2, 3, 9]
쉽게 생각해서 by value는 독립적이고, by reference는 의존적이라고 봐도 될까?
[참고]
https://www.ajaypalcheema.com/assignment-by-value-vs-reference-in-solidity/
https://medium.com/coinmonks/under-the-hood-with-solidity-reference-types-16b3e4e3559f
'Blockchain > Solidity' 카테고리의 다른 글
[Solidity] Using X for Y 문법 (1) | 2023.12.27 |
---|---|
[Solidity] Storage VS Memory (0) | 2023.08.17 |