Thành phần văn bản
Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 50 trên 61.
Thử thách
DễDựa trên trait Draw bạn đã tạo ở bài học trước, hãy thêm thành phần giao diện người dùng thực sự đầu tiên: TextField. Thành phần này sẽ đại diện cho một phần tử hiển thị văn bản trong hệ thống tài liệu của chúng ta.
Bạn sẽ mở rộng dự án bằng một tệp module mới:
draw.rs: Giữ lại traitDrawtừ thử thách trước.text_field.rs: Tạo một structTextFieldcó trườngcontentcông khai, với kiểuString. Triển khai traitDrawchoTextFieldđể khi gọidraw(), chương trình in văn bản theo định dạng cụ thể:Text: {content}main.rs: Đưa cả hai module vào và tạo một instanceTextField. Gọi phương thứcdraw()của instance đó để hiển thị thành phần.
Hãy nhớ rằng module text_field cần sử dụng trait Draw từ module draw. Bạn có thể truy cập trait này bằng crate::draw::Draw vì cả hai module đều thuộc cùng một crate.
Đầu vào sau sẽ được cung cấp:
- Một chuỗi đại diện cho nội dung của trường văn bản
Đầu ra của bạn phải theo chính xác định dạng sau:
Text: Hello WorldTự làm thử
mod draw;
mod text_field;
use draw::Draw;
pub struct Label {
pub text: String,
}
impl Draw for Label {
fn draw(&self) {
println!("{}", self.text);
}
}
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let content = input.trim().to_string();
// TODO: Tạo một instance của TextField rồi gọi draw() trên instance đó
}Tất cả bài học trong Lập trình hướng đối tượng
1Phương thức và hành vi
Nhập môn khối triển khaiTham số selfPhương thức có thể thay đổiHàm liên kếtNhiều khối triển khaiNối chuỗi phương thứcÔn tập: thao tác với hình chữ nhật4Dự án: Thú cưng ảo
Định nghĩa thú cưngCho thú cưng ăn7Các trait tiêu chuẩn
Trait DebugTrait DisplayClone và CopyCác trait so sánh bằngÔn tập: Điểm có thể in ra2Tính đóng gói và module
Kiến thức cơ bản về moduleTừ khóa publicTrường riêng tưHàm lấy giá trịHàm thiết lập giá trịÔn tập: tủ khóa an toàn5Kiểu tổng quát
Cấu trúc tổng quátPhương thức tổng quátNhiều kiểu tổng quátHàm tổng quátÔn tập: điểm tọa độTự luyện tập: Trình biên dịch Rust online