상세 컨텐츠

본문 제목

솔리디티 강좌 21강 if 조건문

솔리디티 깨부수기 - 기본

by D_One 2021. 9. 21. 13:14

본문


 

유튜브를 통해, 쉽고 간편하게 이해 해보아요!

 

https://youtu.be/E_AhRM5b1CU

 

- YouTube

 

www.youtube.com

구독/좋아요 해주셔서 감사합니다 :) !!


 

안녕하세요 

 

오늘은 if 조건문에 대해서 알아 볼게요.

 

기존에 다른 언어를 경험해 보신 분들은 if가 익숙하실거예요.

 

솔리디티도 다른언어처럼 if 문이 존재 한답니다.

 

if문은 주로 어떠한 조건이 충족했을때, if문안에 있는 내용을 실행 시킨답니다.

 

if문 기본 적으로 2가지 형태가 있습니다.

 

1.
    if(if 함수가 발동 되는 조건){
        if 내용 
    }
    else{ if 함수가 발동이 안되면
        else 내용 
    }
    
 2.
    if(if가 발동 되는 조건){
        if 내용 
    }
    else if(else if가 발동 되는 조건){
        else if 내용 
    }
    ...
    else{ if, else if 가 발동이 안되면
        else 내용 
    }

 

먼저 첫번째 형태 부터 보겠습니다.

 

    if(if 함수가 발동 되는 조건){
        if 내용 
    }
    else{ if 함수가 발동이 안되면
        else 내용 
    }

if문의 가장 기본은 if와 else를 사용해주는 것 입니다.

위에서 보시다 시피, if 다음 괄호 부분에, 어떠한 조건을 넣어 주어야합니다.

그러한 조건이 충족되었을때, if문안의 내용이 실행이 된답니다.

 

이와 반대로, if문에 조건이 충족이 되지 않았을경우, else 문에 들어가서 else문안의 내용이 실행이 됩니다.

즉 else는 if문의 조건이 충족이 되지 않는 모든 경우수들이라고 할 수 있습니다.

 

자 그러면 좀 더 쉽게 예시로 볼게요.

    string private result = "";
    function isIt5(uint256 _number) public returns(string memory){
        if(_number == 5){
            result = "Yes, it is 5";
            return result;
        }
        else{
            result = "No, it is not 5";
            return result;
        }

    }

간단한 함수 isIt5 가 있습니다.

이 함수는 uint256 타입의 파라미터 _number를 받습니다.

그리고, if 문에는 "_number 가 5와 같은지?" 라는 조건이 있습니다.

만약에 _number에 5를 넣는다면, if문 안의 내용 result="Yes, it is 5"; 와 return result; 가 실행이되어, 

return 값에는  Yes, it is 5가 나올것입니다.

 

그와 반대의 경우, _number가 3일경우, 

else 문에 들어가서 result="Yes, it is not 5"; 와 return result; 가 실행이 될 것입니다. 

 

위와 같이 조건에따라 result 라는 값이 자유롭게 변화 되는걸 알 수 가 있습니다.

 

또한 위의 코드는 이런식으로도 바꿔 쓸수 있답니다.

 

    string private result = "";

    function isIt5(uint256 _number) public returns(string memory){
        if(_number == 5){
            result = "Yes, it is 5";
            return result;
        }
        result = "No, it is not 5";
        return result;
    }

위의 함수와 다른점은 else를 지웠다는것 뿐입니다.

isIt5 라는 함수안의 가장 위인 if(_number == 5) 부터 실행 하겠죠, 

만약에 _number 가 3 이라면, 저 if 문은 그냥 지나치고,

result="Yes, it is not 5"; 와 return result; 가 실행이 될 것입니다. 

 

이와 반대로, _numer가 5라면, 저 if 조건문에 충족이 되어,

if문안으로 들어가서 if문 안의 내용 result="Yes, it is 5"; 와 return result; 이 실행되겠죠.

그리고 return 이 되니까 저 함수는 끝이 나겠죠. 

 

즉 위와같이 else를 생략해줘도 되는 부분이랍니다.

 

자 인제 두번째 형태를 보겠습니다.

    if(if가 발동 되는 조건){
        if 내용 
    }
    else if(else if가 발동 되는 조건){
        else if 내용 
    }
    ...
    else{ if, else if 가 발동이 안되면
        else 내용 
    }

else if 라는 것이 추가 된것을 알 수 가있습니다.

기존에 if 와 else를 쓴다면, 확률이 50 대 50 이겠죠 왜냐하면, if의 조건문 아니면 else 이다 니까요

이 처럼 50 대 50이니, 조건을 두기에 극히 제한적일거예요.

 

그래서, 그때 쓰이는게 else if 랍니다.

즉 else if 도 if 처럼 else if 만의 조건문을 만들어 주는거죠.

 

예시로 보겠습니다.

 

    string private result = "";
    function isIt5or3or1(uint256 _number) public returns(string memory){
        if(_number == 5){
            result = "Yes, it is 5";
            return result;
        }
        else if(_number == 3){
            result = "Yes, it is 3";
            return result;
        }
        else if(_number == 1){
            result = "Yes, it is 1";
            return result;
        }
        else{
            result = "No, it is not 5, 3 or 1";
            return result;
        }

isIt5or3or1 이라는 함수가 있습니다.

저희가 예시로 본 isIt5와 매우 유사하먀, 거기에 else if 문 2개를 더추가해서, 

"파라미터 _number 가 3 인가?",  "파라미터 _number 가 1 인가?" 라는 조건문 2개를 넣어 졌습니다.

이 처럼 else if 문을 사용하면, 조건문을 추가할 수 있다 라는것을 알 수 가있습니다.

 

또한 _number 가 5,3,1 이 아닌 모든 경우의 수가 else문에 들어간다는걸 알 수 가 있습니다.

 

영상 참고해서 보시면 이해가 더 잘되실 거예요

관련글 더보기