Menu
CoddyTech

Struct dạng tuple

Thuộc phần Logic và luồng chương trình trong hành trình Rust của Coddy. Bài học 25 trên 66.

Trong khi các struct thông thường dùng các trường có tên, Rust còn có một kiểu khác gọi là struct tuple. Kiểu này giúp bạn tạo kiểu tùy chỉnh ngắn gọn hơn khi không cần đặt tên riêng cho từng trường.

Cấu trúc tuple kết hợp lợi ích của việc tạo kiểu mới với sự đơn giản của tuple. Bạn định nghĩa cấu trúc này bằng từ khóa struct, theo sau là tên kiểu và các kiểu của trường trong dấu ngoặc đơn:

struct Color(i32, i32, i32);

Lệnh này tạo một kiểu Color chứa ba giá trị i32, biểu thị các giá trị màu RGB. Khác với struct thông thường, bạn không chỉ định tên trường. Bạn truy cập các giá trị theo vị trí, giống như với tuple.

Để tạo một đối tượng của cấu trúc tuple, bạn truyền các giá trị trong dấu ngoặc đơn:

let red = Color(255, 0, 0);

Bạn có thể truy cập từng trường bằng ký hiệu dấu chấm cùng chỉ số trường: red.0 cho bạn giá trị đầu tiên, red.1 cho bạn giá trị thứ hai, và cứ tiếp tục như vậy.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận ba đầu vào: giá trị đỏ (dưới dạng số nguyên), giá trị xanh lá (dưới dạng số nguyên) và giá trị xanh dương (dưới dạng số nguyên). Định nghĩa một cấu trúc tuple Color chứa ba giá trị i32 biểu thị các thành phần màu RGB. Tạo một đối tượng của cấu trúc tuple này bằng các giá trị đầu vào, sau đó truy cập và in từng thành phần màu bằng ký pháp chỉ số.

Yêu cầu:

  • Định nghĩa cấu trúc tuple Color có ba trường i32
  • Đọc đầu vào thứ nhất và chuyển thành i32 để lấy giá trị đỏ
  • Đọc đầu vào thứ hai và chuyển thành i32 để lấy giá trị xanh lá
  • Đọc đầu vào thứ ba và chuyển thành i32 để lấy giá trị xanh dương
  • Tạo một đối tượng của cấu trúc tuple Color với các giá trị này
  • Truy cập từng trường bằng ký pháp dấu chấm với các chỉ số (0, 1, 2) và in thông tin màu theo chính xác định dạng bên dưới

Đầu vào:

  • Dòng thứ nhất: Giá trị đỏ dưới dạng số nguyên (ví dụ: 255)
  • Dòng thứ hai: Giá trị xanh lá dưới dạng số nguyên (ví dụ: 128)
  • Dòng thứ ba: Giá trị xanh dương dưới dạng số nguyên (ví dụ: 0)

Đầu ra:

  • Dòng thứ nhất: Red: [red_value]
  • Dòng thứ hai: Green: [green_value]
  • Dòng thứ ba: Blue: [blue_value]

Tự làm thử

use std::io;

// TODO: Định nghĩa struct tuple Color tại đây

fn main() {
    // Đọc giá trị màu đỏ
    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");
    
    // Đọc giá trị màu xanh lá
    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");
    
    // Đọc giá trị màu xanh dương
    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: Tạo một instance của struct tuple Color bằng các giá trị đầu vào
    
    // TODO: Truy cập và in ra từng thành phần màu bằng ký pháp chỉ số
    // Định dạng: Red: [value], Green: [value], Blue: [value]
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Rust online