การผูกค่าด้วย @
จับค่าและทดสอบ
การผูกค่าด้วย @ เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
ตัวดำเนินการผูกค่าด้วย @
ตัวดำเนินการ @ ช่วยให้คุณ ทดสอบ ค่ากับรูปแบบและ ผูก ค่านั้นไว้กับชื่อในเวลาเดียวกัน จึงได้ทั้งการตรวจสอบและค่า
ปัญหาที่ตัวดำเนินการนี้แก้ไข
เมื่อใช้รูปแบบช่วงค่า คุณจะทราบว่าค่าอยู่ในช่วง แต่จะไม่สามารถเข้าถึงค่าที่แน่นอนได้ @ จะเก็บค่านั้นไว้ขณะเดียวกันก็ยังทดสอบช่วงค่าได้
การผูกค่าด้วย @ เบื้องต้น
ในที่นี้เราจับคู่ตัวเลขในช่วงค่าและเก็บค่าที่แน่นอนของมันไว้ผ่าน id
fn main() {
let n = 5;
match n {
id @ 1..=5 => println!("got {id} in range"),
_ => println!("out of range"),
}
}เมื่อไม่ใช้ @
เปรียบเทียบกัน: แขนงช่วงค่าแบบปกติจับคู่ได้แต่ไม่สามารถตั้งชื่อให้ค่าได้ ดังนั้นจึงไม่สามารถพิมพ์ได้ว่าตัวเลขใดจับคู่สำเร็จ
fn main() {
let n = 5;
match n {
1..=5 => println!("in range (value unknown here)"),
_ => println!("out of range"),
}
}@ กับข้อมูล enum
ผูกฟิลด์ไว้พร้อมกับจำกัดเงื่อนไขของฟิลด์นั้น ในที่นี้เราจะเก็บ id ไว้เฉพาะเมื่ออยู่ในช่วงค่าที่ถูกต้อง
enum Message {
Hello { id: i32 },
}
fn main() {
let msg = Message::Hello { id: 7 };
match msg {
Message::Hello { id: id @ 3..=10 } => {
println!("valid id {id}");
}
Message::Hello { id } => {
println!("other id {id}");
}
}
}การผูกค่าทั้งหมด
@ ยังสามารถผูกค่าที่มีโครงสร้างทั้งหมดไว้ได้ ขณะเดียวกันรูปแบบที่ซ้อนอยู่จะตรวจสอบส่วนประกอบของค่า
fn main() {
let point = (3, 4);
match point {
p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
p => println!("{:?}", p),
}
}การใช้ร่วมกับ |
คุณสามารถผูกค่าข้ามรูปแบบทางเลือกได้ ชื่อนั้นต้องปรากฏในทุกแขนงทางเลือก
fn main() {
let code = 404;
match code {
c @ (400 | 404 | 500) => println!("error code {c}"),
c => println!("code {c}"),
}
}@ ใน if let
การผูกค่าด้วย @ ใช้ใน if let ได้เช่นกัน
fn main() {
let value = Some(50);
if let Some(n @ 1..=100) = value {
println!("in range: {n}");
}
}เมื่อใดควรใช้ @
ใช้ @ เมื่อคุณต้องการทั้งสองอย่าง:
- จำกัดค่าด้วยช่วงค่าหรือรูปแบบย่อย
- ใช้ค่าที่แน่นอนนั้นในเนื้อหาของแขนง
หากไม่ต้องการทั้งสองอย่าง การผูกค่าหรือรูปแบบแบบปกติจะเรียบง่ายกว่า
ความอ่านง่าย
รูปแบบนี้อ่านได้ว่า name @ pattern: ผูก name หากค่าตรงกับ pattern ตั้งชื่อให้สื่อความหมายเพื่อให้เจตนาชัดเจน
การจัดกลุ่มค่าด้วย @
การใช้งานทั่วไปคือจัดค่าลงในกลุ่มที่มีป้ายกำกับ พร้อมเก็บตัวเลขเดิมไว้สำหรับรายงาน
fn classify(temp: i32) -> String {
match temp {
t @ ..=0 => format!("freezing ({t})"),
t @ 1..=20 => format!("cool ({t})"),
t @ 21..=30 => format!("warm ({t})"),
t => format!("hot ({t})"),
}
}
fn main() {
println!("{}", classify(25));
}ตรวจสอบอย่างรวดเร็ว
ตัวดำเนินการ @ ทำหน้าที่อะไรในรูปแบบอย่าง id @ 1..=5
สรุปทบทวน
คุณได้เรียนรู้ตัวดำเนินการผูกค่าด้วย @:
- ผูกค่าไว้กับชื่อขณะทดสอบค่ากับรูปแบบ
- แก้ปัญหาการสูญเสียค่าที่เกิดกับรูปแบบช่วงค่า
- ใช้ได้กับข้อมูล enum, ทูเพิล, ทางเลือกด้วย
|และif let - ใช้เมื่อต้องการทั้งข้อจำกัดและค่าดังกล่าว
เรียนรู้ Rust ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 144
คำถามที่พบบ่อย
บทเรียน “การผูกค่าด้วย @” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การผูกค่าด้วย @” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การผูกค่าด้วย @”
จับค่าและทดสอบ คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การผูกค่าด้วย @” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม
ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เจาะลึก match
- if let และ while let
- การผูกค่าด้วย @
- การแยกโครงสร้าง