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