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