강좌12-Enum
Enum
기본 기능은 다른 언어의 Enum과 유사합니다. 다만, 구조체와 같이 implement로 확장이 가능하며, Nullable 변수를 선언할 때 사용하는 등 활용도가 더 넓습니다.
간단히 예제를 통해 알아보도록 하겠습니다.
enum Language {
KOREAN,
ENGLISH
}
fn main() {
let default_lang = Language::KOREAN;
}
구조체 담기
enum Language {
KOREAN(String),
ENGLISH(String)
}
fn main() {
let default_lang = Language::KOREAN(String::from("Korea"));
}
Tuple 담기
enum Language {
KOREAN(String, i32),
ENGLISH(String, i32)
}
fn main() {
let default_lang = Language::KOREAN(String::from("Korea"), 82);
}
여러 모델 담기
enum Book {
UNKNOWN,
WRITE { country: String, code: u32 },
READ (String),
PICTURE (i32)
}
impl 사용 가능
impl Book {
fn Buy(&self) {
}
}
Option
Null을 가질 수 있는 변수를 선언할 때 사용합니다.
enum형으로 되어 있으며, 값이 있을 때는 Some 없을 때는 None을 사용합니다.
enum Option<T> {
Some(T),
None,
}
let x: Option<i8> = Some(10);
let y = None;
다른언어의 nullable 변수와 마찬가지로 일반 변수와 연산을 할 수 없습니다.
따라서, 에러가 발생함을 확인할 수 있습니다.
fn main() {
let x = 10;
let y = Some(10);
let sum = x + y;
}
//결과
|
4 | let sum = x + y;
| ^ no implementation for `i8 + std::option::Option<i8>`
|
= help: the trait `std::ops::Add<std::option::Option<i8>>` is not implemented for `i8`
댓글남기기