Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

การต่อสตริงด้วย format!

คำอธิบาย

เราสามารถสร้างและต่อสตริงขึ้นมาได้ด้วยการเรียกเมท็อด push และ push_str บนตัวแปร String แบบ mutable หรือจะใช้โอเปอเรเตอร์ + ก็ได้ อย่างไรก็ตาม ในหลายๆ กรณี การเลือกใช้มาโคร format! มักจะสะดวกสบายกว่ามาก โดยเฉพาะอย่างยิ่งเมื่อต้องผสมผสานระหว่างสตริงคงที่ (String Literals) กับตัวแปรต่างๆ

ตัวอย่าง

#![allow(unused)]
fn main() {
fn say_hello(name: &str) -> String {
    // We could construct the result string manually.
    // let mut result = "Hello ".to_owned();
    // result.push_str(name);
    // result.push('!');
    // result

    // But using format! is better.
    format!("Hello {name}!")
}
}

ข้อดี

การใช้ format! มักเป็นแนวทางที่กระชับ สละสลวย และอ่านเข้าใจง่ายที่สุดในการต่อสตริงเข้าด้วยกัน

ข้อเสีย

ในแง่ของความเร็ว มักไม่ใช่วิธีที่มีประสิทธิภาพสูงสุด เพราะการเรียกใช้งาน push หรือ push_str ต่อเนื่องกันบนสตริงแบบ mutable จะทำงานได้เร็วกว่า (โดยเฉพาะอย่างยิ่งหากมีการจัดสรรพื้นที่หน่วยความจำล่วงหน้า (Pre-allocation) ตามขนาดที่คาดหวังไว้แล้ว)