¼ÓÈëÊÕ²Ø | ÉèΪÊ×Ò³ | »áÔ±ÖÐÐÄ | ÎÒҪͶ¸å ½úÖÐÕ¾³¤Íø £¨https://www.0354zz.com/£©- ¿Æ¼¼¡¢ÈÝÆ÷°²È«¡¢Êý¾Ý¼ÓÃÜ¡¢ÔÆÈÕÖ¾¡¢ÔÆÊý¾ÝÇ¨ÒÆ!
µ±Ç°Î»Ö㺠Ê×Ò³ > ×ۺϾ۽¹ > ±à³ÌÒªµã > ×ÊѶ > ÕýÎÄ

ѧϰRustģʽƥÅ䣺´Ó»ù´¡µ½¸ß¼¶¼¼ÇɵĽø½×Ö®ÂÃ

·¢²¼Ê±¼ä£º2025-01-24 14:41:02 ËùÊôÀ¸Ä¿£º×ÊѶ À´Ô´£ºDaWei
µ¼¶Á£º ¡¡¡¡RustÓïÑÔÒÔÆäÇ¿´óµÄÀàÐÍϵͳºÍÄڴ氲ȫÐÔ¶øÖø³Æ£¬¶øÄ£Ê½Æ¥Åä(Pattern Matching)ÔòÊÇRustÖзdz£ÖØÒªÇÒ¸»ÓбíÏÖÁ¦µÄÌØÐÔÖ®Ò»¡£ËüÔÊÐíÎÒÃǸù¾Ý²»Í¬µÄÌõ¼þÀ´Æ¥ÅäºÍ½âÎöÊý¾Ý£¬Ê¹µÃ´úÂë¸ü¼ÓÇå

¡¡¡¡RustÓïÑÔÒÔÆäÇ¿´óµÄÀàÐÍϵͳºÍÄڴ氲ȫÐÔ¶øÖø³Æ£¬¶øÄ£Ê½Æ¥Åä(Pattern Matching)ÔòÊÇRustÖзdz£ÖØÒªÇÒ¸»ÓбíÏÖÁ¦µÄÌØÐÔÖ®Ò»¡£ËüÔÊÐíÎÒÃǸù¾Ý²»Í¬µÄÌõ¼þÀ´Æ¥ÅäºÍ½âÎöÊý¾Ý£¬Ê¹µÃ´úÂë¸ü¼ÓÇåÎú¡¢Ò×¶ÁºÍ¿Éά»¤¡£±¾ÎĽ«´Ó»ù±¾Óï·¨¿ªÊ¼£¬Öð²½½éÉÜRustÖеÄģʽƥÅ䣬²¢Ì½ÌÖһЩ¸ß¼¶¼¼ÇÉ¡£

¡¡¡¡### »ù±¾Óï·¨

¡¡¡¡ÔÚRustÖУ¬Ä£Ê½Æ¥ÅäÖ÷Ҫͨ¹ý`match`±í´ïʽÀ´ÊµÏÖ¡£Æä»ù±¾Óï·¨ÈçÏ£º

¡¡¡¡```rust

¡¡¡¡match expression {

¡¡¡¡pattern1 => expression1,

¡¡¡¡pattern2 => expression2,

¡¡¡¡...

¡¡¡¡_ => expression_n,

¡¡¡¡}

¡¡¡¡```

¡¡¡¡ÆäÖУ¬`expression`ÊÇÐèÒª½øÐÐÆ¥ÅäµÄ±í´ïʽ£¬`pattern1`¡¢`pattern2`µÈÊÇÆ¥ÅäµÄģʽ£¬`expression1`¡¢`expression2`µÈÊǵ±¶ÔӦģʽƥÅä³É¹¦Ê±Ö´Ðеıí´ïʽ¡£`_`×÷ΪͨÅä·û£¬ÓÃÓÚÆ¥ÅäÈκÎÖµ¡£

¡¡¡¡ÀýÈ磬ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£¬ÓÃÓÚÅжÏÒ»¸öÕûÊýÊÇ·ñΪÕýÊý¡¢¸ºÊý»¹ÊÇÁ㣺

¡¡¡¡```rust

¡¡¡¡fn main() {

¡¡¡¡let num = -5;

¡¡¡¡match num {

¡¡¡¡n if n > 0 => println!("ÕýÊý"),

¡¡¡¡0 => println!("Áã"),

¡¡¡¡_ => println!("¸ºÊý"),

¡¡¡¡}

¡¡¡¡}

¡¡¡¡```

¡¡¡¡ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁË`if`ÊØÎÀÀ´Æ¥ÅäÕýÊý£¬`0`Ö±½ÓÆ¥ÅäÁ㣬¶ø`_`ÔòÆ¥ÅäÆäËûËùÓÐÇé¿ö£¬¼´¸ºÊý¡£

¡¡¡¡### ¸ß¼¶¼¼ÇÉ

¡¡¡¡³ýÁË»ù±¾Óï·¨Í⣬RustµÄģʽƥÅ仹֧³ÖÐí¶à¸ß¼¶¼¼ÇÉ£¬Ê¹Æä¸ü¼ÓÇ¿´óºÍÁé»î¡£ÒÔÏÂÊÇһЩ³£¼ûµÄ¸ß¼¶¼¼ÇÉ£º

¡¡¡¡#### 1. ½á¹¹»¯°ó¶¨

¡¡¡¡½á¹¹»¯°ó¶¨ÔÊÐíÎÒÃÇÔÚÆ¥Åäʱͬʱ½â¹¹ºÍ°ó¶¨Êý¾Ý¡£ÀýÈ磬¶ÔÓÚÒ»¸öÔª×é`(a, b)`£¬ÎÒÃÇ¿ÉÒÔÖ±½Ó½«Æä½â¹¹Îª`a`ºÍ`b`¡£Õâ¶ÔÓÚ´¦Àí¾ßÓй̶¨½á¹¹µÄÊý¾ÝÀàÐͷdz£ÓÐÓá£

¡¡¡¡```rust

¡¡¡¡fn main() {

¡¡¡¡let (x, y) = (1, 2);

¡¡¡¡match (x, y) {

¡¡¡¡(a, b) if a == b => println!("ÏàµÈ"),

¡¡¡¡(a, b) => println!("²»ÏàµÈ£¬x = {}, y = {}", a, b),

¡¡¡¡}

¡¡¡¡}

¡¡¡¡```

¡¡¡¡#### 2. ͨÅä·ûµ¼Èë

¡¡¡¡ÔÚ´óÐÍÏîÄ¿ÖУ¬ÎÒÃÇ¿ÉÄÜÐèÒª´Ó¶à¸öÄ£¿éÖе¼Èëģʽ¡£´Ëʱ£¬¿ÉÒÔʹÓÃͨÅä·ûµ¼ÈëÀ´¼ò»¯´úÂë¡£

¡¡¡¡```rust

¡¡¡¡use std::{

¡¡¡¡fs::File,

¡¡¡¡io::{self, Read},

¡¡¡¡};

¡¡¡¡fn main() -> io::Result<()> {

¡¡¡¡let mut file = File::open("example.txt")?;

¡¡¡¡let mut contents = String::new();

¡¡¡¡file.read_to_string(&mut contents)?;

¡¡¡¡match contents.as_str() {

¡¡¡¡"hello" => println!("»¶Ó­"),

¡¡¡¡_ => println!("δ֪ÃüÁî"),

¡¡¡¡}

¡¡¡¡Ok(())

¡¡¡¡}

¡¡¡¡```

¡¡¡¡ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃ`use`Óï¾ä½«¶à¸öÄ£¿éµÄģʽһ´ÎÐÔµ¼Èëµ½µ±Ç°×÷ÓÃÓòÖС£

¡¡¡¡#### 3. ÊØÎÀºÍÌõ¼þ

¡¡¡¡ÊØÎÀºÍÌõ¼þÔÊÐíÎÒÃÇÔÚÆ¥ÅäʱÌí¼Ó¶îÍâµÄÌõ¼þ¡£ÊØÎÀʹÓÃ`if`¹Ø¼ü×Ö£¬¶øÌõ¼þÔòʹÓÃ`where`×Ӿ䡣

¡¡¡¡```rust

¡¡¡¡fn main() {

¡¡¡¡let num = Some(42);

¡¡¡¡match num {

¡¡¡¡Some(x) if x > 0 => println!("ÕýÊý"),

¡¡¡¡None | Some(_) => println!("·ÇÕýÊý"),

¡¡¡¡}

¡¡¡¡}

¡¡¡¡```

2025AIͼƬ´´ÖÆ£¬½ö¹©²Î¿¼

¡¡¡¡ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁËÊØÎÀÀ´Æ¥Åä´óÓÚ0µÄÕýÊý£¬Í¬Ê±Ê¹ÓÃÁËÌõ¼þÀ´Æ¥Åä`None`ºÍËùÓÐ`Some`Öµ¡£

¡¡¡¡#### 4. ²»¿É±äºÍ¿É±äģʽ

¡¡¡¡ÔÚRustÖУ¬Ä£Ê½¿ÉÒÔÊDz»¿É±äµÄ(ĬÈÏ)»ò¿É±äµÄ¡£Í¨¹ýÔÚģʽǰÌí¼Ó`mut`¹Ø¼ü×Ö£¬ÎÒÃÇ¿ÉÒÔ´´½¨¿É±äģʽ£¬ÒÔ±ãÔÚÆ¥ÅäʱÐÞ¸ÄÆäÖµ¡£

¡¡¡¡```rust

¡¡¡¡fn main() {

¡¡¡¡let mut num = 5;

¡¡¡¡match num {

¡¡¡¡mut x if x > 0 => {

¡¡¡¡x -= 1;

¡¡¡¡println!("{}", x);

¡¡¡¡}

¡¡¡¡_ => println!("·ÇÕýÊý"),

¡¡¡¡}

¡¡¡¡println!("{}", num);

¡¡¡¡}

¡¡¡¡```

¡¡¡¡ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁ˿ɱäģʽÀ´ÐÞ¸Ä`num`µÄÖµ¡£×¢Ò⣬ÔÚÆ¥Åä½áÊøºó£¬`num`µÄÖµÒ²»á±»Ð޸ġ£

¡¡¡¡Õ¾³¤¸öÈ˼û½â£¬RustµÄģʽƥÅ书ÄÜÇ¿´óÇÒÁé»î£¬Í¨¹ýÕÆÎÕ»ù±¾Óï·¨ºÍ¸ß¼¶¼¼ÇÉ£¬ÎÒÃÇ¿ÉÒÔ±àд³ö¸ü¼ÓÇåÎú¡¢Ò×¶ÁºÍ¸ßЧµÄ´úÂ롣ϣÍû±¾ÎÄÄܹ»°ïÖúÄã¸üºÃµØÀí½âºÍÓ¦ÓÃRustÖеÄģʽƥÅä¡£

£¨±à¼­£º½úÖÐÕ¾³¤Íø£©

¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ!

    ÍÆ¼öÎÄÕÂ