홈강좌Rust 입문·중급 47편 중 7편째
Rust bool 과 char — 참·거짓 하나, 글자 하나
Rust 의 bool 은 true 와 false 두 값뿐이고, >= 나 == 같은 비교의 결과가 bool 이다. char 는 글자 하나를 작은따옴표로 담는다. 큰따옴표로 쓰면 문자열이 되어 E0308 이 난다. 한글 한 글자, 이모지 하나도 char 하나다.
01 비교하면 bool 이 나온다
놀이기구 입장을 정한다고 하자. 19살 이상이거나 보호자와 함께면 들어갈 수 있다.
fn main() {
let age = 15;
let with_parent = true;
let is_adult = age >= 19;
let can_enter = is_adult || with_parent;
println!("adult: {is_adult}");
println!("enter: {can_enter}");
println!("not adult: {}", !is_adult);
} Compiling ticket v0.1.0 (~/projects/ticket)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
Running `target/debug/ticket`
adult: false
enter: true
not adult: trueage >= 19는 "19 이상인가" 를 묻고, 답으로true나false를 낸다. 15 는 19 보다 작으니false다.||는 "또는" 이다. 둘 중 하나만true여도true다. 보호자와 함께니true가 됐다.!는 뒤집기다.!is_adult는false를 뒤집어true다.
자주 쓰는 연산을 모으면 이렇다.
| 연산 | 뜻 | 예 → 결과 |
|---|---|---|
== · != | 같다 · 다르다 | 3 == 3 → true |
< · <= · > · >= | 크기 비교 | 15 >= 19 → false |
&& | 그리고 (둘 다 참) | true && false → false |
|| | 또는 (하나라도 참) | true || false → true |
! | 뒤집기 | !true → false |
bool 은 12편에서 if 의 조건으로 다시 나온다.
02 char 는 작은따옴표다
이름의 첫 글자를 char 에 담아 보자. 다른 언어 습관대로 큰따옴표를 쓰면 이렇게 된다.
fn main() {
let initial: char = "K";
println!("{initial}");
}error[E0308]: mismatched types
--> src/main.rs:2:25
|
2 | let initial: char = "K";
| ---- ^^^ expected `char`, found `&str`
| |
| expected due to this
|
help: if you meant to write a `char` literal, use single quotes
|
2 - let initial: char = "K";
2 + let initial: char = 'K';
|- 무엇 — 타입이 안 맞는다(mismatched types).
- 어디 — 2번째 줄의
"K".char가 와야 하는데&str이 왔다.&str은 문자열이다(20편). - 고치는 법 —
help:가 "char를 쓰려던 것이면 작은따옴표를 쓰라" 고 한다.-줄이 지금 코드,+줄이 고친 코드다.
Rust 에서 따옴표는 뜻이 다르다. 작은따옴표 'K' 는 글자 하나(char), 큰따옴표 "K" 는 문자열이다. 글자가 하나뿐이어도 큰따옴표면 문자열이다.
03 한글도 이모지도 char 하나다
fn main() {
let initial = 'K';
let hangul = '가';
let crab = '🦀';
println!("{initial} {hangul} {crab}");
println!("{}", hangul as u32);
} Compiling initial v0.1.0 (~/projects/initial)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.16s
Running `target/debug/initial`
K 가 🦀
44032char 하나에는 영어 글자뿐 아니라 한글 한 글자, 이모지 하나까지 담긴다. 유니코드 글자 하나가 char 하나다.
마지막 줄은 6편의 as 로 '가' 를 숫자로 바꾼 것이다. 44032 는 유니코드에서 '가' 의 번호다. 컴퓨터는 글자를 이런 번호로 기억한다.
04 실습 — 입장 조건 바꿔 보기
bool-ops 에서 age 를 20 으로, with_parent 를 false 로 바꿔 돌려 보자. 성인이니 enter: true 가 나와야 한다. || 를 && 로 바꾸면 "성인이면서 보호자와 함께" 여야 들어갈 수 있다. 결과가 어떻게 바뀔지 먼저 짐작한 뒤 돌려 보면 연산이 손에 붙는다. 다음 편은 값 여러 개를 하나로 묶는 튜플이다.