国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

通過編寫一個簡單的游戲來學(xué)習(xí) Rust

開發(fā) 后端
Rust 是一門賦予任何人構(gòu)建可靠和高效的軟件能力的語言。你可以通過編寫一個 Rust 版本的“猜數(shù)字”游戲來探索 Rust。

[[373303]]

你可以嘗試以多種語言編程一個簡單的游戲來開始編程之路。

當(dāng)你想學(xué)習(xí)一門新的編程語言時,不妨關(guān)注一下編程語言的共同點。

  • 變量
  • 表達式
  • 語句

這些概念是大多數(shù)編程語言的基礎(chǔ)。一旦你理解了它們,你就可以開始弄清楚其余的東西。

因為編程語言通常具有相似性,一旦你懂了一種語言,你就可以通過理解其差異來學(xué)習(xí)另一種語言的基礎(chǔ)知識。

學(xué)習(xí)新語言的一個好方法是使用一個你可以用來練習(xí)的標(biāo)準(zhǔn)程序。這可以讓你專注于語言,而不是程序的邏輯。我在這一系列文章中使用了一個“猜數(shù)字”的程序,在這個程序中,電腦會在 1 到 100 之間選一個數(shù)字讓你猜。程序一直循環(huán),直到你猜對數(shù)字為止。

這個程序鍛煉了編程語言的幾個概念:

  • 變量
  • 輸入
  • 輸出
  • 條件評估
  • 循環(huán)

這是學(xué)習(xí)一門新編程語言的很好的實踐實驗。

安裝 Rust

你可以使用 Rustup 安裝一個 Rust 工具鏈,或者你可以在線嘗試 Rust 而不在本地安裝它。

如果你在本地安裝,你應(yīng)該定期用 rustup update 來更新它,以保持你的工具鏈的新鮮,并使用 cargo update 來保持你的庫的最新版本。

Rust 語言版本的猜數(shù)字

Rust 是一門賦予任何人構(gòu)建可靠和高效的軟件能力的語言。你可以通過編寫一個 Rust 版本的“猜數(shù)字”游戲來探索 Rust。

第一步是編寫一個 Cargo.toml 文件。你可以使用 cargo new 命令生成一個骨架 Cargo.toml。這幾乎是開始一個 Rust 項目的最佳方式。

  1. $ cargo new guess
  2. $ cd guess
  3. $ ls -1
  4. Cargo.toml
  5. src/

Cargo.toml 文件為你的包命名,并給它一些元數(shù)據(jù),最重要的是,指明了它依賴于 rand crate

  1. [package]
  2. name = "guess"
  3. version = "2020.11.0"
  4. authors = ["Moshe Zadka <moshez@opensource.com>"]
  5. edition = "2018"
  6.  
  7. # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  8.  
  9. [dependencies]
  10. rand = "*"

Rust 中的許多東西不是由語言或標(biāo)準(zhǔn)庫提供的。取而代之的是,你可以從某個外部 crate 得到它們,這些 crate 可以做許多事情。

程序邏輯在 src/main.rs 中:

  1. use rand::Rng;
  2. use std::io::BufRead;
  3.  
  4. fn main() {
  5. let mut rng = rand::thread_rng();
  6. let random = rng.gen_range(1..101);
  7. println!("Guess a number between 1 and 100");
  8. for line in std::io::stdin().lock().lines() {
  9. let parsed = line.ok().as_deref().map(str::parse::<i64>);
  10. if let Some(Ok(guess)) = parsed {
  11. match guess {
  12. _ if guess < random => println!("Too low"),
  13. _ if guess > random => println!("Too high"),
  14. _ => {
  15. println!("That's right");
  16. break;
  17. }
  18. }
  19. }
  20. }
  21. }

代碼的前兩行聲明你要做什么。在本例中,rand::Rng 生成一個猜測值,而 trait std::io::BufRead 使得可以從標(biāo)準(zhǔn)輸入中讀取。

Rust 代碼的入口在 main() 函數(shù)中,所以下一步就是定義 main()

要給一個變量賦值,先放 let,再放變量的名字,后面放 = 號。這樣就創(chuàng)建了一個不可變變量。

Rust 中大多數(shù)變量都是不可變的,但是 rng 對象必須是可變的(mut)。例如,語句 let random = 0 給random 變量分配一個零值。

函數(shù)的第一行創(chuàng)建了一個線程安全的 Rng 對象,并將其分配給變量 rng。Rust 是建立在線程和內(nèi)存安全的基礎(chǔ)上的,所以你必須在開始寫代碼時就考慮到這些事情。

程序的下一行讀取函數(shù) gen_range() 的結(jié)果,并將其分配給名為 random 的變量。該函數(shù)取一個最小值(包含)和一個上界(不包含)。為了也包含上界,你可以用一個等號來標(biāo)記較大的數(shù)字(例如,1...=100),或者你也可以像我在代碼中做的那樣,將上界設(shè)置為比你的預(yù)期最大值大 1。在這種情況下,該范圍是 1 到 100,使得游戲剛好有足夠的挑戰(zhàn)性。

中央循環(huán)在 std::io::stdin() 中迭代行。由于有各種可能導(dǎo)致行不能讀取的例外情況,Rust 要求你用一個 Result 來包裹一行。有時候可能無法將一行解析為一個整數(shù)。

這段代碼使用條件模式匹配來忽略所有會導(dǎo)致錯誤的行:

  1. let parsed = line.ok().as_deref().map(str::parse::<i64>);
  2. if let Some(Ok(guess)) = parsed {
  3. // ...
  4. }

第一行創(chuàng)建了一個 Result<Option<i64>, ...> 對象,因為它可能在讀取或解析步驟中失敗。由于下一行只在 Some(Ok(guess)) 上匹配,每當(dāng)一行的結(jié)果是一個不匹配的值時,它就會跳過 if 語句。這是一種強大的忽略錯誤的方法。

Rust 支持條件表達式和流程控制,比如循環(huán)。在“猜數(shù)字”游戲中,只要猜中的值不等于 random,Rust 就會繼續(xù)循環(huán)。

if 語句的主體包含一個 Rust 的 match 語句的三向分支。雖然 match 最常用于模式匹配,但它也可以檢查任意條件。在這種情況下是打印一個適當(dāng)?shù)男畔ⅲ绻聹y是正確的,則中斷(break)循環(huán)。

示例輸出

現(xiàn)在你已經(jīng)寫好了你的 Rust 程序,你可以運行它來玩“猜數(shù)字”游戲。每次運行程序時,Rust 都會選擇一個不同的隨機數(shù),所以繼續(xù)猜,直到找到正確的數(shù)字。

  1. $ cargo run
  2.    Compiling guess v2020.11.0 (/Users/mzadka/src/guess)
  3.     Finished dev [unoptimized + debuginfo] target(s) in 0.70s
  4.      Running `target/debug/guess`
  5. Guess a number between 1 and 100
  6. 50
  7. Too high
  8. 25
  9. Too high
  10. 12
  11. Too low
  12. 18
  13. Too high
  14. 15
  15. Too high
  16. 13
  17. Too low
  18. 14
  19. That's right

典型的做法是用 cargo run 來測試程序。最終,你可能會使用 cargo build 分成兩個獨立的步驟構(gòu)建一個可執(zhí)行文件并運行它

學(xué)習(xí) Rust

這個“猜數(shù)字”游戲是學(xué)習(xí)一門新的編程語言的一個很好的入門程序,因為它以一種相當(dāng)直接的方式鍛煉了幾個常見的編程概念。通過在不同的編程語言中實現(xiàn)這個簡單的游戲,你可以展示語言的一些核心概念,并比較它們的細節(jié)。

你有喜歡的編程語言嗎?你會如何用它來寫“猜數(shù)字”游戲呢?請關(guān)注本系列文章,看看你可能感興趣的其他編程語言的例子吧! 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-01-01 19:30:21

Python編程語言

2021-01-14 08:55:20

C語言編程

2021-01-05 12:38:53

C++編程語言軟件開發(fā)

2022-06-03 16:59:13

編程語言Awk

2021-02-05 16:03:48

JavaScript游戲?qū)W習(xí)前端

2023-01-13 18:55:09

游戲Ada編程語言

2021-01-19 09:35:36

Python視頻游戲編程語言

2024-06-10 23:07:05

2017-11-23 08:30:26

編程Python擲骰子游戲

2020-11-30 13:16:29

Python編程語言

2020-12-28 06:29:31

Bash互動游戲Linux

2021-01-12 06:42:50

Lua腳本語言編程語言

2021-04-13 06:35:13

Elixir語言編程語言軟件開發(fā)

2021-07-06 14:36:05

RustLinux內(nèi)核模塊

2009-09-11 09:11:09

2018-03-29 08:30:48

Linux命令BASH

2019-09-23 09:11:02

Python文本編輯器操作系統(tǒng)

2015-03-24 19:48:24

2023-09-08 10:50:24

Tcl/TkWish

2023-07-11 13:34:19

Rust開發(fā)軟件
點贊
收藏

51CTO技術(shù)棧公眾號

桃乃木香奈av在线| 国产综合18久久久久久| 黄页网站大全在线观看| 91丨精品丨国产| 中文字幕成人网| 97视频资源在线观看| caopo在线| 国产精品午夜在线观看| 日本高清+成人网在线观看| 外国电影一区二区| 欧美激情性做爰免费视频| 99国产精品免费网站| 日本精品一区二区三区不卡无字幕| 国产午夜精品久久久久久免费视| 嫩草影院官网| 亚洲欧美另类中文字幕| 婷婷综合网站| 国产无套内射久久久国产| 欧美精品日日鲁夜夜添| 这里视频有精品| 亚洲精品欧洲精品| 国产日韩精品一区二区三区| 欧洲不卡视频| 欧美俄罗斯乱妇| 青青草视频一区| 成人的网站免费观看| 一级视频在线观看视频在线啦啦| 亚洲日本aⅴ片在线观看香蕉| 欧美jizz19性欧美| 国产一区二区三区小说| 欧美精品在欧美一区二区少妇| 精品国产一区二区三区香蕉沈先生| 亚洲精品一区二区三| 日本精品免费观看高清观看| 黄色欧美网站| 日本激情视频在线| 亚洲精品理论电影| 欧美丝袜丝交足nylons172| 免费的一级黄色片| 日韩精品在线视频美女| 亚洲综合精品四区| 二区三区四区高清视频在线观看| 2019精品视频| 亚洲国产一区在线观看| 日韩啪啪电影网| 青青青草原在线| 国产精品普通话| 亚洲va欧美va天堂v国产综合| 综合干狼人综合首页| 小明精品国产一区二区三区| 青草全福视在线| 精品蜜桃传媒| 日韩av片电影专区| 337p日本欧洲亚洲大胆色噜噜| 亚洲国产影院| 精品久久影院| 日韩福利影视| 亚洲成人影院麻豆| 开心丁香婷婷深爱五月| 亚洲不卡1区| 成人在线小视频| 懂色av一区二区三区| 奇米色一区二区| 极品国产人妖chinesets亚洲人妖| 午夜网站在线观看| 国产伦精品一区二区三| 亚洲精品中文字幕有码专区| 国产成人精品亚洲日本在线桃色| 外国成人毛片| 看黄色免费网站| 999日本视频| 欧美综合视频在线观看| 极品裸体白嫩激情啪啪国产精品| 人狥杂交一区欧美二区| 色偷偷亚洲女人天堂观看欧| 国产精品日韩在线一区| 精品国产免费视频| 久久精品无码一区二区三区| 久久综合国产| 欧美黄页免费| 国产高清免费在线播放| 国产91在线视频观看| 97人人模人人爽人人少妇| xxxxx成人.com| 91精品一区二区三区久久久久久 | 欧美区在线观看| 久久精品亚洲国产奇米99| 麻豆精品网站| 婷婷激情图片久久| 亚洲丝袜美腿一区| 亚洲最大的免费视频网站| 热国产热中文视频二区| 久草视频这里只有精品| 青青草成人激情在线| 成人影片在线播放| 97免费视频在线| 综合久久五月天| 国产一区二区三区中文| 亚洲精品一区二区三区四区高清| 最近的2019中文字幕免费一页| 久久国内精品自在自线400部| 猛男gaygay欧美视频| 艳母动漫在线观看| 国产精品劲爆视频| 日韩av大片在线| 国产精品久久不能| 成人精品视频99在线观看免费 | 高清在线视频不卡| av色综合久久天堂av色综合在| 欧美激情黑人| 日韩欧美中文在线观看| 久久久精品午夜少妇| 亚洲成在人线免费| 欧美极度另类性三渗透| 超级碰在线观看| 成人短视频在线| 91精品99| 亚洲成人免费视频| 久久久久久久香蕉网| 日本久久高清视频| 91大神在线网站| 精品中文一区| 国产网站一区二区| 亚洲色图综合网| 精品欧美日韩在线| 在线观看av中文| 亚洲黄页在线观看| 免费欧美在线视频| av不卡一区二区三区| 亚洲精品少妇30p| 欧美va天堂va视频va在线| 欧美激情免费观看| 亚洲视频sss| 伊人春色在线| 97人澡人人添人人爽欧美| 日韩欧美自拍| 成人精品电影在线观看| 婷婷成人激情在线网| 日韩中文字幕免费| 欧美一区二区在线| 8x8x视频在线| 欧洲一区二区三区精品| 亚洲区欧美区| 亚洲一区二区三区四区在线免费观看| 久久国产加勒比精品无码| 国产成人免费观看| 日本亚洲天堂| 日韩欧美中文| 日韩精品一区二区三区老鸭窝| 国产精品扒开腿爽爽爽视频 | 国产精品va在线播放| 丝袜美腿亚洲一区二区| 色婷婷av一区二区三区软件 | 成人3d精品动漫精品一二三| 91成人国产| 精品国产91久久久| 国产精品美女无圣光视频| 色婷婷综合网站| 精品中文一区| 午夜激情久久久| 99久久99久久精品国产片| 亚洲天堂二区| 精品999成人| 欧美精品电影在线播放| 亚洲巨乳在线观看| 136福利第一导航国产在线| 国产精品一区在线观看乱码 | 日韩1区2区3区| 日韩经典第一页| 免费一级特黄毛片| 福利片一区二区| 色欧美乱欧美15图片| 久久久久一区二区三区| 色8久久影院午夜场| 久久久久久**毛片大全| 成人福利免费观看| 欧美性猛片xxxxx免费中国| 老司机午夜精品| 欧美激情亚洲自拍| 亚洲男人天堂| 国产一区二区三区香蕉| 91av视频在线| 超碰porn在线| 自拍偷拍精品| 亚洲视频1区2区| 在线成人激情黄色| 国产精品对白刺激久久久| 三级ai视频| **日韩最新| 中文亚洲欧美| 国产欧美日韩卡一| 91麻豆精品国产91久久久资源速度| 欧美精品久久久| 成年人黄视频在线观看| 麻豆精品国产传媒mv男同| 日韩久久免费视频| 国产综合在线看| 久久精品国产一区二区三区不卡| 亚洲熟妇国产熟妇肥婆| 国产丝袜在线|