یاد بگیرید که چگونه داده های رشته خود را برای ارائه کامل قالب بندی کنید.
قالب بندی رشته یکی از جنبه های مهم برنامه نویسی است زیرا به شما امکان می دهد داده ها را به شیوه ای خوانا و ساختار یافته دستکاری و نمایش دهید. برای تجربه کاربری بهتر میتوانید نمایش دادهها را با قالببندی رشتهها کنترل کنید.
Rust مکانیزم قدرتمند و انعطافپذیری را برای قالببندی رشتهها فراهم میکند که به شما امکان میدهد خروجی واضح و مختصر از جمله عملکردهای عددی، تاریخ، زمان و مدیریت خطا ایجاد کنید.
قالب بندی رشته های پایه در Rust
Rust قابلیتی برای قالب بندی رشته ها با دیگر انواع داخلی Rust فراهم می کند.
می توانید از قالب استفاده کنید! ماکرو برای قالب بندی رشته های اصلی در Rust. قالب! ماکرو روشی مختصر و قدرتمند برای ساخت رشتههای قالببندی شده با نگهدارندههای مکان در بریسهای فرفری ارائه میدهد.
fn main() {
let name = "Alice";
let age = 25;
let message = format!("My name is {} and I am {} years old.", name, age);
println!("{}", message);
}
متغیر name دارای یک رشته و متغیر age یک عدد صحیح است. متغیر پیام دارای یک رشته فرمت شده است که از فرمت استفاده می کند! برای جایگزینی متغیرهایی با مقادیر مربوطه، در نتیجه یک رشته قالب حاوی نام و سن.
قالب! ماکرو از مشخص کننده های فرمت مختلف پشتیبانی می کند که به شما امکان می دهد خروجی را کنترل کنید.
در اینجا نحوه تعیین تعداد اعشار برای اعداد ممیز شناور، تعریف عرض فیلدها و تراز کردن خروجی آمده است.
fn main() {
let pi = 3.14159;
let formatted_pi = format!("The value of pi is approximately {:.2}", pi);
println!("{}", formatted_pi); // prints 3.14
}
متغیر pi دارای یک مقدار ممیز شناور است. با فرمت مشخص کننده :.2 می توانید فرمت را آموزش دهید! ماکرو برای نمایش پی با دو رقم اعشار.
قالب! ماکرو یکی از روش های متعدد قالب بندی رشته با Rust است. بسته به نیاز خود، استفاده از println را در نظر بگیرید! یا بنویس! ماکرو برای خروجی فرمت شده به کنسول یا سایر جریان های خروجی.
قالب بندی مقادیر عددی
Rust همچنین قابلیتی برای قالب بندی مقادیر مختلف عددی، از اعداد صحیح گرفته تا شناورها و دیگر انواع عددی را فراهم می کند.
به طور کلی، مشخصکنندههای قالب اساس قالببندی رشته در Rust هستند و بسته به مقدار عددی که میخواهید قالببندی کنید، به مشخصکننده مناسب نیاز دارید.
در اینجا برخی از مشخصکنندههای فرمت Rust برای مقادیر عددی ارائه میشود:
نوع عددی
قالب ساز
عملکرد
اعداد صحیح
%d یا %i
اعداد صحیح شامل مقادیر مثبت و منفی را قالب بندی می کند.
اعداد اعشاری
% f
مناسب برای قالب بندی اعداد ممیز شناور، از جمله قطعات انتگرال و کسری.
نماد نمایی
%e یا %E
اعداد را به صورت نماد علمی (شکل نمایی) قالب بندی می کند.
نمایش اکتال
%o
اعداد صحیح را در نمایش هشتگانه قالب بندی می کند (پایه 8).
نمایش هگزادسیمال
%x یا %X
اعداد صحیح را در نمایش هگزادسیمال قالب بندی می کند (پایه 16).
علاوه بر این، می توانید padding و تراز را برای مقادیر عددی مشخص کنید. بالشتک فاصله یا صفر را به یک مقدار عددی فرمت شده اضافه می کند تا به عرض دلخواه برسد. Padding به تراز کردن مقادیر برای ارائه به شکل جدولی یا دیگر طرحبندیهای بصری سازماندهی شده کمک میکند. قبل از مقدار عرض، می توانید کاراکتر padding را مشخص کنید، فاصله یا صفر.
برای تراز چپ یک مقدار، از پرچم – استفاده کنید. برای تراز کردن یک مقدار، پرچم را حذف کنید یا از پرچم “0” برای لایه صفر استفاده کنید.
fn main() {
number = 42
formatted_number = "%10d" % number
print(formatted_number)
}
مقدار در عرض 10 کاراکتر به سمت راست تراز شده است که منجر به ایجاد هشت فاصله اول قبل از عدد می شود.
قالب بندی رشته های سفارشی در Rust
قالب بندی رشته سفارشی برای عملیات سخت تر مهم است. می توانید با ماژول std::fmt داخلی Rust، پیاده سازی های قالب بندی سفارشی را برای انواع خود ایجاد کنید.
ماژول std::fmt ویژگی هایی را برای قالب بندی خروجی با طیف گسترده ای از گزینه ها برای سفارشی کردن ظاهر داده ها در طول فرآیند تبدیل رشته ارائه می دهد. ماژول std::fmt یک ویژگی Display و Debug را ارائه می دهد که برای عملیات قالب بندی رشته مفید است.
صفت نمایش
ویژگی Display با تعریف نحوه قالببندی یک شی با مکاننمای {} در یک رشته، به تولید خروجی قابل خواندن برای انسان کمک میکند. شما می توانید با تعریف متدی به نام fmt که فرمت کننده را به عنوان آرگومان می گیرد، صفت Display را برای انواع سفارشی خود پیاده سازی کنید.
فرمتکننده روشهای مختلفی را برای کنترل خروجی قالب ارائه میکند، مانند روشهای write_str و write_fmt.
use std::fmt;
// Define a struct named `Point`
struct Point {
x: i32,
y: i32,
}
// Implement the `Display` trait for `Point`
impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// Format the `Point` struct as "(x, y)"
write!(f, "({}, {})", self.x, self.y)
}
}
fn main() {
// Create a new `Point` instance
let point = Point { x: 5, y: 10 };
// Print the `Point` struct using the `Display` formatting
println!("The point is: {}", point);
}
ساختار Point ویژگی Display را پیاده سازی می کند. در داخل متد fmt، نوشتن! ماکرو را فرمت کنید و خروجی مورد نظر را با نگهدارنده {} در قالبکننده بنویسید.
صفت اشکال زدایی
ویژگی Debug مشابه ویژگی Display است، با این تفاوت که بر تولید خروجی مناسب برای اهداف اشکال زدایی و مدیریت خطا تمرکز می کند. ویژگی Debug عمدتاً با متغیر {:?} استفاده می شود.
پیاده سازی ویژگی Debug در انواع سفارشی شما ساده است. ویژگی Debug یک پیاده سازی پیش فرض را بر اساس صفت Display ارائه می دهد. با این حال، میتوانید رفتار پیشفرض را نادیده بگیرید تا یک نمایش اشکال زدایی تخصصی ارائه کنید.
use std::fmt;
// Define a struct named `Person`
#[derive(Debug)]
struct Person {
name: String,
age: u32,
}
// Implement the `Display` trait for `Person`
impl fmt::Display for Person {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
// Format the `Person` struct as a human-readable string
write!(f, "Name: {}, Age: {}", self.name, self.age)
}
}
fn main() {
// Create a new `Person` instance
let person = Person {
name: String::from("Alice"),
age: 30,
};
// Print the `Person` struct using the `Display` formatting
println!("Display: {}", person);
// Print the `Person` struct using the `Debug` formatting
println!("Debug: {:?}", person);
}
این برنامه ویژگی Debug را برای ساختار Person با #[derive(Debug)] استخراج می کند. این به طور خودکار پیاده سازی را بر اساس فیلدهای ساختار ایجاد می کند.
ماکرو println نمایش اشکال زدایی را با نگهدارنده قالب بندی Debug برای قالب بندی خروجی با استفاده از اجرای Debug چاپ می کند.
Rust دارای یک سیستم نوع غنی از ویژگی است
سیستم نوع غنی Rust نقش مهمی در قالب بندی رشته ایفا می کند. با استفاده از تایپ استاتیک و کتابخانه های قالب بندی قدرتمند Rust، می توانید کد ایمن و کارآمد را در حین انجام کارهای دستکاری رشته و قالب بندی بنویسید.
سیستم نوع، ایمنی زمان کامپایل را تضمین میکند و از خطاهای رایج، از عدم تطابق نوع تا مسائل تعیینکننده قالب، جلوگیری میکند. با ترکیبی از سیستم نوع Rust و قابلیتهای قالببندی گسترده آن، میتوانید با اطمینان با چالشهای قالببندی رشته مقابله کنید و از عملکرد و ضمانتهای ایمنی زبان بهره ببرید.