ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 조건문 & 반복문
    Block-Chain/Solidity 2023. 2. 15. 14:21

    Solidity의 조건문과 반복문에 대해 정리하였습니다.

     

     


    < if 조건문 >

    Solidity에도 다른 언어와 마찬가지로 조건문이 있습니다.

    문법은 JavaScript와 동일합니다.

     

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

     

    Ex)

    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;
        }

     

     


    < loop 반복문 >

    반복문의 종류는 총 3가지가 있습니다.
    for
    while
    do-while

    문법은 JavaScript와 동일합니다.

     

    • for 반복문
    for (초기값; 값이 얼마나 forloop을 돌아야하는지; forloop 한번 돌때마다 값의 변화;) {
      loop 내용;
    }
    • while 반복문
    초기값
    while (값이 얼마나 forloop을 돌아야하는지) {
      loop 내용;
    }
    • do-while 반복문
    초기값
    do{
      loop 내용;
    }
    while (값이 얼마나 forloop을 돌아야하는지)

     

     


    < continue, break >

    continue와 break 키워드는 끝나지 않은 반복문의 제어를 위해 사용합니다.

     

    • continue : 다음 반복문으로 이동
    • break : 반복문을 끝냄

     

    Ex)

    contract lecture23 {
      event CountryIndexName(uint256 indexed _index, string _name);
      string[] private countryList = ["South Korea", "North Korea", "USA", "China", "Japan"];
      
      funtion useContinue() public {
        for (uint256 i = 0; i < countryList.length; i++) {
          if (i%2 == 1) {
            continue;
          }
          emit CountryIndexName(i, countryList[i]);
        }
      }
      
      funtion useBreak() public {
        for (uint256 i = 0; i < countryList.length; i++) {
          if (i == 3) {
            break;
          }
          emit CountryIndexName(i, countryList[i]);
        }
      }
    }

     

     


    < linear search >

    배열의 값을 검색할 때 자주 사용하는 linear search 사용방법에 대해 소개합니다.

     

    Ex)

    string[] private countryList = ["South Korea", "North Korea", "USA", "China", "Japan"];
    
    function linearSearch(string memory _search) public view returns(int256, string memory) {
      for (uint256 i = 0; i < countryList.length; i++) {
        if (keccak256(bytes(countryList[i]) == keccak256(bytes(_search)) {
          return (i, countryList[i]);
        }
      }
      return (99, "Nothing");
    }

    : 솔리디티 내에서 string은 직접 비교가 불가능해, 다음과 같은 과정을 거친 후 비교해줘야 함.

    1. string을 bytes

    2. keccak256을 이용해 다시 해시화

     

     

     

     

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

    Modifier & SPDX  (0) 2023.03.22
    에러 핸들러  (0) 2023.03.07
    Mapping & Array & struct(구조체)  (0) 2023.01.16
    상속 & 이벤트  (0) 2023.01.05
    Instance  (0) 2022.12.28

    댓글

Designed by Tistory.