Rust:
การต่อสตริง
วิธีการ:
Rust ให้วิธีการหลายวิธีในการเชื่อมต่อข้อความด้วยกัน มาเริ่มกันเลย
การใช้ตัวดำเนินการ +
let hello = "Hello".to_string();
let world = " world!";
let result = hello + world;
println!("{}", result); // ผลลัพธ์: Hello world!
ตัวดำเนินการ + นำ " world!" ต่อท้าย "Hello", แต่ระวัง, hello ต้องเป็น String, ไม่ใช่ slice
มาโคร format!
let mood = "happy";
let message = format!("Have a {} day!", mood);
println!("{}", message); // ผลลัพธ์: Have a happy day!
format! คล้ายกับ println!, ผสมตัวแปรเข้ากับข้อความ สะดวกมากสำหรับเทมเพลต
การเพิ่มข้อความเข้าไปในสตริง
let mut tip = "Remember to".to_string();
tip.push_str(" breathe.");
println!("{}", tip); // ผลลัพธ์: Remember to breathe.
push_str เป็นการเพิ่ม slice ไปยัง String. เหมาะสำหรับการเพิ่มข้อความทีละน้อย
มุมลึก
การต่อสตริงไม่ใช่ความคิดใหม่ มันมีมาตั้งแต่ยุคเริ่มต้นของการเขียนโปรแกรม; อย่างไรก็ตาม เราต้องการนำคำมาผสานกันเสมอ
ใน Rust, String เป็นชนิดสตริงที่เติบโตได้, เปลี่ยนแปลงได้, ถือครองข้อมูลแบบ UTF-8 มีทางเลือกอื่นอย่าง &str, slice ของสตริง, ซึ่งเป็นมุมมองเข้าไปใน String
แต่ละวิธีมีข้อแลกเปลี่ยน:
ตัวดำเนินการ
+เหมาะสำหรับการต่อกันหนึ่งหรือสองครั้ง แต่จะกินตัวดำเนินการด้านซ้าย (มันเข้าครอบครอง) ทุกการใช้+ก็จะจัดสรรหน่วยความจำเพิ่มเติมซึ่งอาจสะสมไปformat!ไม่ยึดครอบครองค่าใด ๆ ซึ่งดี แต่มันอาจจะช้าลงเนื่องจากความยืดหยุ่นและการจัดสรรใหม่ทุกครั้งที่เรียก นับเป็นมีดสวิสสำหรับการประกอบสตริงpush_strมีประสิทธิภาพสำหรับการเพิ่มทีละน้อย มันไม่จัดสรรหน่วยความจำเว้นแต่ว่าStringต้องการพื้นที่เพิ่ม
การโฟกัสที่ความเป็นเจ้าของและการยืมใน Rust หมายความว่ามันจัดการกับสตริงได้แตกต่างกว่าภาษาอื่น ๆ เช่น Python หรือ JavaScript ความแตกต่างนี้รับประกันความปลอดภัยด้านหน่วยความจำ แต่ก็อาจมาพร้อมกับความยากในการเรียนรู้
ดูเพิ่มเติม
สำหรับการศึกษาเพิ่มเติม:
- หนังสือ Rust เกี่ยวกับสตริง: https://doc.rust-lang.org/book/ch08-02-strings.html
- Rust โดยตัวอย่างเกี่ยวกับสตริง: https://doc.rust-lang.org/rust-by-example/std/str.html
- Rust std::string::String API Docs: https://doc.rust-lang.org/std/string/struct.String.html