본문 바로가기

Blockchain/Solidity

[Solidity] by value VS by reference

크립토 좀비 풀어보다가 헷갈려서 찾아봤다.

파이썬 공부하면서도 나오는 개념이었던 거 같은데.. 맨날 까먹는다..🥲 

괜찮다. 까먹을 때마다 와서 보면 된다.


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/

 

Assignment by Value vs Reference in Solidity

Assigning storage to memory is by value, i.e., value is copied over.Assigning memory to storage is also by value, i.e., value is copied over.

www.ajaypalcheema.com

 

https://medium.com/coinmonks/under-the-hood-with-solidity-reference-types-16b3e4e3559f

 

Under the Hood with Solidity Reference Types

Reference Type…What does it even mean?😏

medium.com

'Blockchain > Solidity' 카테고리의 다른 글

[Solidity] Using X for Y 문법  (1) 2023.12.27
[Solidity] Storage VS Memory  (0) 2023.08.17