요약 - Shape Enum
Coddy Rust 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 18번째.
챌린지
쉬움서로 다른 도형을 나타내기 위해 열거형(enum)을 사용하고, 각 도형의 치수를 저장하는 기하학 계산기를 만들어 보겠습니다. 여러분이 만들 Shape 열거형은 하나의 타입이 어떻게 서로 다른 데이터 구조를 가질 수 있는지, 그리고 메서드를 통해 어떻게 통일된 동작을 제공할 수 있는지 보여줄 것입니다.
코드를 정리하기 위해 두 개의 파일을 생성합니다:
shape.rs: 다음 두 가지 변리언트(variant)를 가진 공개(public)Shape열거형을 정의합니다:Circle— 반지름을 나타내는 단일f64값을 가집니다 (튜플 구문 사용)Rectangle— 이름이 있는 필드인width(f64)와height(f64)를 가집니다
area메서드를 구현하세요. 원의 경우 π 값으로3.14159를 사용하세요.main.rs: shape 모듈을 가져와서, 제공된 입력을 사용하여 각 도형 변리언트의 인스턴스를 하나씩 생성하고 각 도형의 면적을 출력합니다.
area 메서드는 f64를 반환해야 합니다. 매칭할 때 각 변리언트를 구조 분해(destructure)하여 치수를 추출하고 적절한 공식을 적용하세요:
- 원의 면적:
π × radius² - 직사각형의 면적:
width × height
출력은 각 도형의 면적을 개별 줄에 표시해야 하며, 소수점 첫째 자리까지 출력해야 합니다:
Circle area: {area}
Rectangle area: {area}예를 들어, 원의 반지름이 5.0이고 직사각형의 너비가 4.0, 높이가 6.0인 경우 출력은 다음과 같습니다:
Circle area: 78.5
Rectangle area: 24.0세 개의 입력을 받게 됩니다: 원의 반지름, 직사각형의 너비, 그리고 직사각형의 높이입니다.
직접 해보기
mod shape;
use shape::Shape;
fn main() {
// 입력 읽기
let mut radius_input = String::new();
std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
let radius: f64 = radius_input.trim().parse().expect("Invalid number");
let mut width_input = String::new();
std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
let width: f64 = width_input.trim().parse().expect("Invalid number");
let mut height_input = String::new();
std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
let height: f64 = height_input.trim().parse().expect("Invalid number");
// TODO: 반지름을 사용하여 Circle 도형 생성
// TODO: 너비와 높이를 사용하여 Rectangle 도형 생성
// TODO: 각 도형의 넓이를 소수점 첫째 자리까지 출력
// 형식: "Circle area: {area}" 및 "Rectangle area: {area}"
}