상세 컨텐츠

본문 제목

솔리디티 강좌 4강 Function 1 - 정의

솔리디티 깨부수기 - 기본

by D_One 2021. 8. 31. 08:57

본문

 

 

어느 언어에서든 중요한 function을 정의하고 쓰는 법을 배워 볼게요. 

 

 

1. Parameter 와 Retrun 값이 없는 function 정의

 

    function 이름 () public { // (public, private, internal, external) 변경가능.  
      // 내용
    }

 

funtion을 정의하는것은 매우 간단해요, 특별한점은 public 과 같은 접근제어자를 함수명 뒤에 써준다는 것 입니다.

접근제어자는 public, private, internal, external 이 있어요. 

오늘은 간단하게 public만 써서 해볼게요.

다음 강의에서 모든 제어자들을 하나씩 다루어 보아요.

 

인제 정의하는 법을 배웠으니, 예시로 function을 정의 해볼게요.

 

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Lec4 {
    uint256 public a = 3;
    function changeA() public{
        a =5;
    }
}

위에 예시가 있듯이,  a 라는 변수는 3을 갖고 있습니다.

그러나 changeA()라는 함수를 실행시키시면 a는 5가 됩니다.

 

그러면 인제, 조금 더 나아가서 changeA를 약간 조작하여, 저희가 원하는 값을 넣어서 변경 해볼게요.

 

2. Parameter는 있고, Retrun 값이 없는 function 정의

    function 이름 (받고싶은 타입  변수명 ) public { 
      // 내용
    }

ex) 

    function 이름 (uint 256 _value) public { 
      // 내용
    }

 

1 번과 달라진점은 uint256 _value 라는 부분인데요. 

이뜻은 uin256 타입으 파라미터를 받겠다 입니다. 

더 나아가서, type 은 여러가지를 쓸수가 있겠죠 예를들어, byte, string, address 등등이 있죠

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Lec4 {
    uint256 public a = 3;
    function changeA(uint256 _value) public{
        a =_value;
    }
}

인제 changeA를 실행할때마다, _value의 파라미터 값을 넣어 주어야합니다.

이 파라미터는 a에 대입이 되어 값이 변경 된답니다. 

 

만약에 2 개 이상의 파라미터가 필요하시다면, 

    function changeA(uint256 _value1, uint256 _value2) public{
        a =_value;
    }

위와 같은 식으로 이어 붙여 주시면 되요. 

 

3. Parameter는 있고, Retrun 값이 있는 function 정의

    function 이름 (받고싶은 타입  변수명 ) public returns(반환하고자 하는 type) {
      // 내용
    }

ex) 

    function 이름 (uint 256 _value) public returns(uint256) { 
      // 내용
    }

 

returns에 (uint256)이 있으니, uint256만 반환한다라는 뜻입니다. 

여기서 주의해야 할 점은, 변수명이 없고 타입만 써주시면 됩니다.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Lec4 {
    uint256 public a = 3;
    function changeA(uint256 _value) public returns(uint256){
        a =_value;
        return a;
    }
}

위와 같이 써주신다면, changeA 함수가 실행될때, 

_value의 파라미터 값을 받고

a 변수에 _value 파라미터가 대입된후

a 값이 리턴됩니다.

물론 a의 값은 uint256 타입입니다.

 

밑에 비디오 참고 해주세요 

관련글 더보기