불리언: bool
bool 은 참(true) 또는 거짓(false) 단 두 가지 값만 가지는 타입입니다.
활성화 여부, 일시정지 상태, 이미 투표했는지처럼 예/아니오로 답할 수 있는 상태를
표현할 때 사용합니다. 정수보다 단순하지만 컨트랙트의 흐름을 제어하는 데 꼭 필요한 타입입니다.
초기값을 지정하지 않은 bool 상태 변수의 기본값은 false 입니다.
논리 연산자
bool 값은 다음 논리 연산자로 결합하거나 뒤집을 수 있습니다.
&&: 그리고(AND), 양쪽이 모두true일 때만true||: 또는(OR), 한쪽이라도true면true!: 부정(NOT),true를false로,false를true로 뒤집음
Solidity 의 && 와 || 는 단락 평가(short-circuit) 를 합니다. 즉 && 는 왼쪽이 false 면
오른쪽을 아예 계산하지 않고, || 는 왼쪽이 true 면 오른쪽을 건너뜁니다. 오른쪽에 가스를 많이
쓰는 연산을 두면 이 성질로 불필요한 비용을 아낄 수 있습니다.
비교 결과도 bool
==, !=, <, >, <=, >= 같은 비교 연산의 결과 역시 bool 입니다.
이 bool 값은 뒤에서 배울 if 문이나 require 의 조건으로 그대로 쓰입니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract BoolExample {
bool public isActive = true;
bool public isPaused = false;
// 활성 상태이면서 일시정지가 아닐 때만 true
function canRun() public view returns (bool) {
return isActive && !isPaused;
}
// 비교 결과가 그대로 bool 이 됨
function isAdult(uint256 age) public pure returns (bool) {
return age >= 19;
}
}Solidity 에는 C 언어 같은 "0 은 거짓, 0 이 아니면 참" 규칙이 없습니다. 조건 자리에는 반드시
bool 값만 올 수 있으므로, 정수를 직접 조건으로 쓸 수 없고 count > 0 처럼 비교해야 합니다.