[멋쟁이 사자처럼 블록체인 스쿨 3기] 23-05-10

임형석·2023년 5월 11일
0

Solidity


IF

If 는 조건문이다.

이 조건문을 설정하면, 조건을 통과할 경우 조건문 이하의 코드가 실행된다.

조건문을 이용하여 다음 조건의 함수를 작성해보았다.

"점수가 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 나머지는 F"

Contract IF{
	function getCredit(uint _score) public view returns(string memory) {
    	if(_score >= 90) {
        	return "A";
        } else if(_score >= 80) {
        	return "B";
        } else if(_score >= 70) {
        	return "C";
        } else {
        	return "F";
        }
    }
}

조건문의 문법은, if(조건){조건 통과시 실행할 코드} 이다.

만약, 조건문을 이중으로 사용할 경우엔 두번 째 조건부터는 else if(){} 형식으로 적어주면 된다.

그리고 모든 조건에 적합하지 않다면, else {실행할 코드} 로 코드를 적어주면 된다.

이렇게 작성한 함수는 다른 함수에서 불러와 사용할 수도 있다.


ENUM

enum 은 한국말로 열거형이라고 불리며 array 와 비슷한 형식이라고도 볼 수 있다.

enum 은 struct 문법과 비슷하게 선언할 수 있다.

enum baseball_team {
	kiwoom,
    doosan,
	yankees,
    dagers,
    braves
}

그렇다면 왜 array 대신 enum 을 사용할까.

enum 의 특징

  1. enum 도 uint, string, bytes 와 같은 하나의 형식이다.
  1. 선언한 enum baseball_team 은 string 형식으로 입력했지만 0,1,2,3,4 처럼 uint 형식으로 저장된다.
  1. array 는 pop, push, delete 등을 사용할 수 있다.
  1. enum 에서 설정한 값은 규칙이라고 볼 수 있으며, 이 규칙은 변하지 않는다.
  1. st = st2[0]; /// st = baseball_team.kiwoom; 한눈에 봐도 우측이 가독성이 좋다. 즉, 코드 작성 및 관리가 편리하다.
  1. 5번 좌측 코드의 string[] 형식은 동적이므로 가스비 소모가 비교적 심하다.
  1. enum 형식은 uint8 크기로 정적이므로 가스비 소모가 비교적 덜하다.
enum mainEngine {
	fullahead,
    slowahead,
    stop,
    slowastern,
    fullastern
}

mainEngine eng1;

uint engCondition = 5;

function ifcondition() public view returns() {
	if(engCondition <= 2) {
    	eng1 = mainEngine.fullastern;
    } else if(engCondition <= 4) {
    	eng1 = mainEngine.slowastern;
    } else if(engCondition >= 6) {
    	eng1 = mainEngine.slowahead;
    } else if(engCondition >= 8) {
    	eng1 = mainEngine.fullahead;
    } else if(engCondition == 5) {
    	eng1 = mainEngine.stop;
    }
}

function set_ME_ahead() public {
	engCondition++;
    ifCondition();
}

function set_ME_astern() public {
	engCondition++;
    ifCondition();
}

function get_ME_Condition() public view returns(mainEngine) {
	return eng1;
}

이런식으로 if 문과 함께 사용할 수 있다.


Boolean

Boolean 도 uint, string, bytes 와 같은 type(형식)중 하나이다.

boolean 은 오직 두가지의 값만 가지고 있다. true 와 false.

contract booooolean {
    bool a;

    function geta() public view returns(bool) {
        return a;
    }

    function seta() public {
        a = true;
    }
}

이렇게 코드를 작성해보자.

처음 선언한 불린형 상태변수 a 는 기본값이 저장되어있지 않으므로 0 이다.

bool 에서는,
0 = false
1 = true
이다.

그러므로 초기값을 지정해주지 않은 상태로 geta 함수를 실행시켜보면

false 값이 나온다.

그리고 true 값을 지정해주는 함수 seta 를 실행시키고 다시 돌려주면 true 값이 나온다.

두가지 값만 있는경우, 불린 형식을 사용할 수 있겠다.

예를 들어, 남자와 여자만 있는 성별이라던지.


0개의 댓글