솔리디티 깨부수기 - 기본
솔리디티 강좌 38강 - enum
D_One
2021. 10. 7. 13:27
유튜브를 통해, 쉽고 간편하게 이해 해보아요!
- 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;
}
}