通過編寫一個簡單的遊戲來學習 Rust|Linux 中國
導讀:你可以嘗試以多種語言編程一個簡單的遊戲來開始編程之路。
本文字數:4068,閱讀時長大約:5分鐘
https://linux.cn/article-12979-1.html
作者:Moshe Zadka
譯者:Xingyu.Wang
當你想學習一門新的編程語言時,不妨關注一下編程語言的共同點。
??變數
??表達式
??語句
這些概念是大多數編程語言的基礎。一旦你理解了它們,你就可以開始弄清楚其餘的東西。
因為編程語言通常具有相似性,一旦你懂了一種語言,你就可以通過理解其差異來學習另一種語言的基礎知識。
學習新語言的一個好方法是使用一個你可以用來練習的標準程序。這可以讓你專註於語言,而不是程序的邏輯。我在這一系列文章中使用了一個「猜數字」的程序,在這個程序中,電腦會在 1 到 100 之間選一個數字讓你猜。程序一直循環,直到你猜對數字為止。
這個程序鍛煉了編程語言的幾個概念:
??變數
??輸入
??輸出
??條件評估
??循環
這是學習一門新編程語言的很好的實踐實驗。
安裝 Rust
你可以使用 Rustup 安裝一個 Rust 工具鏈,或者你可以在線嘗試 Rust而不在本地安裝它。
如果你在本地安裝,你應該定期用??來更新它,以保持你的工具鏈的新鮮,並使用??來保持你的庫的最新版本。
Rust 語言版本的猜數字
Rust
是一門賦予任何人構建可靠和高效的軟體能力的語言。你可以通過編寫一個 Rust 版本的「猜數字」遊戲來探索 Rust。
第一步是編寫一個??文件。你可以使用??命令生成一個骨架?。這幾乎是開始一個 Rust 項目的最佳方式。
文件為你的包命名,並給它一些元數據,最重要的是,指明了它依賴於crate。
Rust 中的許多東西不是由語言或標準庫提供的。取而代之的是,你可以從某個外部 crate 得到它們,這些 crate 可以做許多事情。
程序邏輯在??中:
代碼的前兩行聲明你要做什麼。在本例中,?生成一個猜測值,而trait使得可以從標準輸入中讀取。
Rust 代碼的入口在??函數中,所以下一步就是定義?。
要給一個變數賦值,先放?,再放變數的名字,後面放??號。這樣就創建了一個不可變變數。
Rust 中大多數變數都是不可變的,但是??對象必須是可變的()。例如,語句??給?變數分配一個零值。
函數的第一行創建了一個線程安全的??對象,並將其分配給變數?。Rust 是建立在線程和內存安全的基礎上的,所以你必須在開始寫代碼時就考慮到這些事情。
程序的下一行讀取函數??的結果,並將其分配給名為??的變數。該函數取一個最小值(包含)和一個上界(不包含)。為了也包含上界,你可以用一個等號來標記較大的數字(例如,),或者你也可以像我在代碼中做的那樣,將上界設置為比你的預期最大值大 1。在這種情況下,該範圍是??到?,使得遊戲剛好有足夠的挑戰性。
中央循環在??中迭代行。由於有各種可能導致行不能讀取的例外情況,Rust 要求你用一個??來包裹一行。有時候可能無法將一行解析為一個整數。
這段代碼使用條件模式匹配來忽略所有會導致錯誤的行:
第一行創建了一個??對象,因為它可能在讀取或解析步驟中失敗。由於下一行只在??上匹配,每當一行的結果是一個不匹配的值時,它就會跳過??語句。這是一種強大的忽略錯誤的方法。
Rust 支持條件表達式和流程式控制制,比如循環。在「猜數字」遊戲中,只要猜中的值不等於?,Rust 就會繼續循環。
語句的主體包含一個 Rust 的??語句的三向分支。雖然??最常用於模式匹配,但它也可以檢查任意條件。在這種情況下是列印一個適當的信息,如果猜測是正確的,則中斷()循環。
示例輸出
現在你已經寫好了你的 Rust 程序,你可以運行它來玩「猜數字」遊戲。每次運行程序時,Rust 都會選擇一個不同的隨機數,所以繼續猜,直到找到正確的數字。
典型的做法是用??來測試程序。最終,你可能會使用??分成兩個獨立的步驟構建一個可執行文件並運行它。
學習 Rust
這個「猜數字」遊戲是學習一門新的編程語言的一個很好的入門程序,因為它以一種相當直接的方式鍛煉了幾個常見的編程概念。通過在不同的編程語言中實現這個簡單的遊戲,你可以展示語言的一些核心概念,並比較它們的細節。
你有喜歡的編程語言嗎?你會如何用它來寫「猜數字」遊戲呢?請關注本系列文章,看看你可能感興趣的其他編程語言的例子吧!
via:https://opensource.com/article/20/12/learn-rust
作者:Moshe Zadka選題:lujun9972譯者:wxy校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出
歡迎遵照 CC-BY-NC-SA 協議規定轉載,
如需轉載,請在文章下留言 「轉載:公眾號名稱」。
我們將為您添加白名單,授權「轉載文章時可以修改」,
可以修改版式,但不能修改文字和圖片內容。