Rust:
การแทรกค่าลงในสตริง
วิธีการ:
ใน Rust, เราใช้ format!
macro:
fn main() {
let name = "Ferris";
let greeting = format!("สวัสดี, {}!", name);
println!("{}", greeting); // แสดงผล "สวัสดี, Ferris!"
}
format!
macro ทำงานคล้ายกับ println!
, แต่จะคืนค่าสตริงที่จัดรูปแบบแล้ว แทนที่จะพิมพ์มันออกมา
ดำดิ่งลึกลงไป
Rust เลือกใช้ macros เช่น format!
สำหรับการแทรกสตริงแทนที่จะใช้ syntax ในภาษา ทำไม? Macros มีความสามารถและยืดหยุ่น—ขยายฟังก์ชันของภาษาโดยไม่ต้องมี syntax ที่ซับซ้อน
ในอดีต ภาษาอย่าง C ใช้ฟังก์ชั่นเช่น sprintf
ซึ่งดูไม่สะดวกและมีโอกาสเกิดข้อผิดพลาดได้ง่าย Rust’s format!
macro นั้นปลอดภัยกว่า เพราะป้องกันข้อผิดพลาดทั่วไป
มีทางเลือกอื่น เช่น การใช้ +
ในการต่อสตริง หรือ format_args!
macro เพื่อหลีกเลี่ยงการจัดสรรหน่วยความจำในกอง แต่เมื่อพูดถึงความง่ายและความชัดเจน, format!
ถือว่าเป็นที่สุด
หมายเหตุเรื่องประสิทธิภาพ: format!
จะจัดสรรหน่วยความจำ สำหรับโค้ดที่ต้องการประสิทธิภาพสูงสุด, พิจารณาวิธีอื่น เช่น การเขียนลงใน buffer โดยตรง
ดูเพิ่มเติม
- คู่มือ Rust ทางการเกี่ยวกับ
format!
: https://doc.rust-lang.org/std/macro.format.html format!
เทียบกับprintln!
: https://doc.rust-lang.org/book/ch01-02-hello-world.html- Rust โดยตัวอย่างเกี่ยวกับการจัดรูปแบบ: https://doc.rust-lang.org/rust-by-example/hello/print/print_display.html