Comparison - เปรียบเทียบค่า
std::cmp มี traits สำหรับเปรียบเทียบค่าต่างๆ! เป็น module ที่สำคัญมากเพราะใช้ในการ sort, search, และเปรียบเทียบข้อมูล
cmp มีอะไร?
Section titled “cmp มีอะไร?”| Trait | ใช้ทำอะไร | ต้องการ |
|---|---|---|
PartialEq | ==, != | - |
Eq | equality สมบูรณ์ | PartialEq |
PartialOrd | <, >, <=, >= | PartialEq |
Ord | total ordering | Eq + PartialOrd |
Partial vs Full - ทำไมต้องแยก?
Section titled “Partial vs Full - ทำไมต้องแยก?”fn main() { // ============================================ // Partial = บาง values เปรียบเทียบไม่ได้ // ============================================
// NaN (Not a Number) ไม่สามารถเปรียบเทียบได้ let nan = f64::NAN;
println!("=== NaN behavior ==="); println!("NaN == NaN: {}", nan == nan); // false! println!("NaN != NaN: {}", nan != nan); // true! println!("NaN < 0.0: {}", nan < 0.0); // false println!("NaN > 0.0: {}", nan > 0.0); // false println!("NaN >= NaN: {}", nan >= nan); // false
// partial_cmp return None สำหรับ NaN println!("partial_cmp: {:?}", nan.partial_cmp(&1.0)); // None
// ============================================ // Full (Eq/Ord) = ทุก values เปรียบเทียบได้ // ============================================
// Integers เปรียบเทียบได้ทุกค่า let a = 5i32; let b = 10i32;
println!("\n=== Integer behavior ==="); println!("5 == 5: {}", a == a); // true (reflexive) println!("cmp: {:?}", a.cmp(&b)); // Less (always Some)}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google