ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Function
    Block-Chain/Solidity 2022. 12. 26. 15:07

    Solidity의 함수에 대해 정리하였습니다.

     

     


    < funtion 정의 방법 >

    function 이름 () public {
    	// 함수 내용
    }

     

    Ex) Parameter 와 return값에 따른 함수 정의

    // 1. Parameter와 Return값이 없는 function
    function changeA1() public {
    	a = 5;
    }
    
    // 2. Parameter는 있지만, Return값이 없는 function
    function changeA2(uint256 _value) public {
    	a = _value;
    }
    
    // 3. Parameter와 Return값이 있는 function
    function changeA3(uint256 _value) public returns(uint256) {
    	a = _value;
     	return a;   
    }

     

     


    < 접근제한자 >

    해당 변수(함수)의 접근 범위 설정을 위해 사용됩니다.

     

    • public : 모든 곳에서 접근 가능
    • external : public처럼 모든 곳에서 접근 가능하나, external이 정의된 자기자신 컨트랙 내에서는 접근 불가
    • private : 오직 private이 정의된 자기 컨트랙에서만 가능(private이 정의된 컨트랙을 상속 받은 자식도 불가능)
    • internal : private처럼 오직 internal이 정의된 자기 컨트랙과, internal이 정의된 컨트랙을 상속받은 자식만 접근 가능

     


    < View 와 Pure >

    해당 함수의 변수 접근 권한 설정을 위해 사용됩니다.

     

     

    • 명시 X : function 밖의 변수들을 읽을 수 있고 변경도 가능
    • pure : function 밖의 변수들을 읽지 못하고, 변경도 불가능
    • view : function 밖의 변수들을 읽을 수 있으나 변경 불가능

     

     

    Ex)

    uint256 public a = 1;
    
    function read_a() public view returns(uint256) {
    	return a+2;
    }
    
    function read_a2() public pure returns(uint256) {
    	uint256 b = 1;
    	return b+2;
    }
    
    function read_a3() public returns(uint256) {
    	a = 13;
        return a;
    }

     

     


    < String >

    함수에서 string 사용시 memory 키워드를 붙여주어야 합니다.

     

    solidity의 4가지 영역

    • storage : 대부분의 전역변수 및 함수들이 저장되며, 영속적으로 저장되어 가스 비용이 비쌈.
    • memory : 함수의 파라미터, 함수 내 변수, 리턴값, 레퍼런스 타입이 주로 저장됨.(영속적이지 않아 가스 비용이 쌈)
    • calldata : 주로 external function의 파라미터에서 사용됨.
    • stack : EVM (Ethereum Virtual Machine) 에서 stack data를 관리할 때 쓰는 영역.(1024mb 로 제한)

    Ex) string 형식을 파라미터로 갖는 함수

    function get_string(string memory _str) public pure returns(string memory) {
    	return _str;
    }
    
    function get_uint(uint256 _ui) public pure returns(uint256 memory) {
    	return _ui;
    }

    : uint와 같이 기본 데이터 타입은 memory 키워드 생략 가능

     

     

     

    'Block-Chain > Solidity' 카테고리의 다른 글

    조건문 & 반복문  (0) 2023.02.15
    Mapping & Array & struct(구조체)  (0) 2023.01.16
    상속 & 이벤트  (0) 2023.01.05
    Instance  (0) 2022.12.28
    Solidity란 & 기본 개념  (0) 2022.12.23

    댓글

Designed by Tistory.