상세 컨텐츠

본문 제목

솔리디티 강좌 38강 - enum

솔리디티 깨부수기 - 기본

by D_One 2021. 10. 7. 13:27

본문

 


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

https://youtu.be/CtxjMhF-9vc

 

- YouTube

 

www.youtube.com

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


 

안녕하세요

 

오늘은 enum에 대해서 알아보겠습니다. 

 

enum

enum 은사람이 읽을수 있게, 사용자/개발자에 의해 정의된 상수세트 타입입니다

한개의 enum당 256개까지 저장이 되며, 0 부터 255까지 부여가 됩니다.

(uint8 = 0~255(2^8-1))

상수세트이기에 enum은 uint로 변환해서 사용이 가능하답니다. 

 

강의 영상과 함께 보시며, 참고 하시기 바랍니다.

 

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 < 0.9.0;



contract lec38{
    
    enum CarStatus{
        TurnOff,
        TurnOn,
        Driving,
        Stop
    }
    
    CarStatus public carStatus;
    
    constructor(){
        carStatus = CarStatus.TurnOff;
    }
    
    event carCurrentStatus(CarStatus _carStatus, uint256 _carStatusInInt);
    
    function turnOnCar() public {
        require(carStatus == CarStatus(0), "To turn on, your car must be turned off");
        carStatus = CarStatus(1);
        emit carCurrentStatus(carStatus,uint256(carStatus));
    }
    

    function DrivingCar() public {
        require(carStatus == CarStatus.TurnOn, "To drive a car, your car must be turned on");
        carStatus = CarStatus.Driving;
        emit carCurrentStatus(carStatus,uint256(carStatus));
    }
    
    function StopCar() public {
        require(carStatus == CarStatus.Driving, "To drive a car, your car must be turned on");
        carStatus = CarStatus.Stop;
        emit carCurrentStatus(carStatus,uint256(carStatus));
    }
    
    function turnOffCar() public {
        require(carStatus == CarStatus.TurnOn 
                || carStatus == CarStatus.Stop , "To turn off, your car must be turned on or driving");
        carStatus = CarStatus.TurnOff;
        emit carCurrentStatus(carStatus,uint256(carStatus));
    }

    function CheckStatus() public view returns(CarStatus) {
        return carStatus;
    }
}

관련글 더보기