튜플 구조체
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 25번째.
일반적인 구조체는 이름이 있는 필드를 사용하는 반면, Rust는 튜플 구조체(tuple structs)라는 또 다른 타입을 제공합니다. 이는 각 필드에 개별적으로 이름을 붙일 필요가 없을 때 사용자 정의 타입을 만드는 더 간결한 방법을 제공합니다.
튜플 구조체는 새로운 타입을 생성하는 장점과 튜플의 단순함을 결합합니다. struct 키워드 뒤에 타입 이름과 괄호 안에 필드 타입들을 작성하여 정의합니다:
struct Color(i32, i32, i32);이것은 RGB 색상 값을 나타내는 세 개의 i32 값을 가진 Color 타입을 생성합니다. 일반적인 구조체와 달리 필드 이름을 지정하지 않으며, 튜플과 마찬가지로 위치를 통해 값에 접근합니다.
튜플 구조체의 인스턴스를 생성하려면 괄호 안에 값을 제공합니다:
let red = Color(255, 0, 0);필드 인덱스와 함께 점 표기법(dot notation)을 사용하여 개별 필드에 액세스할 수 있습니다: red.0은 첫 번째 값을 제공하며, red.1은 두 번째 값을 제공하는 식입니다.
챌린지
쉬움세 개의 입력을 받습니다: 빨간색 값(정수), 초록색 값(정수), 파란색 값(정수). RGB 색상 구성 요소를 나타내는 세 개의 i32 값을 갖는 Color 튜플 구조체를 정의하세요. 입력값을 사용하여 이 튜플 구조체의 인스턴스를 생성한 다음, 인덱스 표기법을 사용하여 각 색상 구성 요소를 액세스하고 출력하세요.
요구 사항:
- 세 개의
i32필드를 가진Color튜플 구조체를 정의하세요 - 첫 번째 입력을 읽고 빨간색 값을 위해
i32로 변환하세요 - 두 번째 입력을 읽고 초록색 값을 위해
i32로 변환하세요 - 세 번째 입력을 읽고 파란색 값을 위해
i32로 변환하세요 - 이 값들로
Color튜플 구조체의 인스턴스를 생성하세요 - 인덱스(0, 1, 2)와 함께 점 표기법을 사용하여 각 필드에 액세스하고, 아래에 표시된 정확한 형식으로 색상 정보를 출력하세요
입력:
- 첫 번째 줄: 정수 형태의 빨간색 값 (예:
255) - 두 번째 줄: 정수 형태의 초록색 값 (예:
128) - 세 번째 줄: 정수 형태의 파란색 값 (예:
0)
출력:
- 첫 번째 줄:
Red: [red_value] - 두 번째 줄:
Green: [green_value] - 세 번째 줄:
Blue: [blue_value]
치트 시트
튜플 구조체(tuple struct)는 이름이 있는 필드가 없는 구조체입니다. 이는 새로운 타입을 만드는 이점과 튜플의 단순함을 결합한 것입니다.
struct 키워드 뒤에 타입 이름과 괄호 안에 필드 타입을 작성하여 튜플 구조체를 정의합니다:
struct Color(i32, i32, i32);괄호 안에 값을 제공하여 인스턴스를 생성합니다:
let red = Color(255, 0, 0);필드 인덱스와 함께 점 표기법을 사용하여 필드에 접근합니다:
red.0 // 첫 번째 값
red.1 // 두 번째 값
red.2 // 세 번째 값직접 해보기
use std::io;
// TODO: 여기에 Color 튜플 구조체를 정의하세요
fn main() {
// 빨간색 값 읽기
let mut red_input = String::new();
io::stdin().read_line(&mut red_input).expect("Failed to read line");
let red: i32 = red_input.trim().parse().expect("Invalid input");
// 초록색 값 읽기
let mut green_input = String::new();
io::stdin().read_line(&mut green_input).expect("Failed to read line");
let green: i32 = green_input.trim().parse().expect("Invalid input");
// 파란색 값 읽기
let mut blue_input = String::new();
io::stdin().read_line(&mut blue_input).expect("Failed to read line");
let blue: i32 = blue_input.trim().parse().expect("Invalid input");
// TODO: 입력값을 사용하여 Color 튜플 구조체의 인스턴스를 생성하세요
// TODO: 인덱스 표기법을 사용하여 각 색상 구성 요소에 접근하고 출력하세요
// 형식: Red: [value], Green: [value], Blue: [value]
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.