上一期我們使用vector做為乙個可變容量的箱子存放褲子,為了便於區分褲子還給褲子新增上了編號。小胖現在想使用編號從箱子裡獲取褲子該怎麼辦呢?!
是不是可以編寫乙個for迴圈遍歷箱子中的每一條褲子,如果褲子的開頭編號跟我們需要的編號一致就返回這條褲子。我們編寫**實現下。
這裡我們使用字串的starts_with方法來判斷乙個字串是不是以某個字串為開始的,編寫好後執行看下效果,從命令列的輸出可以看出這樣是能按照褲子的編號找到褲子的。
但每次找褲子都要把箱子翻一遍,這樣是不是太費事了,能不能直接按編號提取出褲子而不需要遍歷其他褲子呢?!
這裡我們可以使用另乙個集合型別hashmap,map裡儲存的是key、value形式的資料,可以使用key提取出相應的value。所以我們可以使用褲子編號做為key,使用褲子做為value.這個檔案裡**有點多了,我們後面會講當專案大了後怎麼使用模組把**拆分到不同的檔案方便維護管理,現在我們就先簡單的把褲子複製到乙個新專案裡。接下來我們使用hashmap關聯的new方法建立乙個hashmap型別的箱子,再使用hashmap的insert方法把褲子放到箱子裡。當我們需要按照編號提取乙個褲子時只需要呼叫hashmap的get方法。這樣就返回了乙個option型別的結果。option型別的值有兩種情況一種是找到了相應編號的褲子返回乙個包含褲子的some, 一種是沒有找到這個編號的褲子返回乙個none.這跟我們的現實需求也很吻合吧?我們的箱子裡未必有你給的編號的褲子,所以rust提供了乙個option型別來分別表示找到了和沒找到的情況。我們在變數的名稱後面加opt字尾這樣方便從名稱中看出它是乙個option。這裡可以使用match語句匹配option,如果找到了就是some 在命令列輸出找到了編號為code的褲子,如果沒有找到就是none,我們輸出沒有找到編號為code的褲子。
儲存執行下**。出錯了吧?
我們就是要讓大家看下出錯資訊,這是報了倆個錯誤,我們先解決上面的乙個乙個來,這裡的意思是語法出錯了,在rust中的模式匹配語法跟scala語言不一樣不需要case關鍵字,我們把case關鍵字去掉再執行看下效果。錯誤不一樣了吧?
這次還是乙個語法錯誤,提示我們這裡需要個逗號或者點或者問號或者右花括號,但我們給了個分號。我們把分號改為逗號,再執行看下效果。
這個錯誤我們以前遇到過吧,在println!巨集裡我們使用花括號站了位置,卻沒有提供變數去填充位置,就像高鐵佔座的,沒那麼多人非要佔那麼多位置,在rust中也是不允許的,所以我們這裡要把code補上。再執行看下效果。
這次又出個新錯誤吧,錯誤資訊提示我們get方法需要個引用型別的引數,我們可以使用&code而不是code,編譯器的編譯資訊還是說的很明白的吧?我們在code前新增&號,儲存再執行看下效果。
這次編譯器告訴我們inert這個方法找不到啊,而且還提示我們是不是要使用的是insert方法啊,這裡我們的方法名敲錯了吧,rust編譯器的提示資訊是不是比較友好,不像你的女朋友生氣了只發脾氣不理你就是不告訴你為什麼生氣,你自己猜去吧!
我們修改好**儲存重新執行看下效果:
這次控制台輸出了找到了編號為2的褲子。我們可以跟使用vector遍歷的輸出做乙個對比
是不是清爽了很多?直接按編號取出相應的褲子,不需要把整個箱子的褲子都遍歷一遍。
這一期我們給大家展示了hashmap的基本用法,還有常見的錯誤資訊。在實際軟體開發中我們也經常會遇到編譯錯誤,所以要鍛鍊看懂錯誤資訊解決錯誤的能力。遇到錯誤不要害怕不要迴避要試著去解決。
接下來我們留乙個
小胖的褲子分為3個品牌,分別是a,b,c牌,我們現在需要使用品牌名稱獲取同品牌的所有褲子,我們這個箱子改怎麼設計**該怎麼編寫呢?
51cto學院:
學習新時代程式語言Rust 9迴圈語句
上一期我們學習並練習了rust的復合基本資料型別,在練習中我們定義了乙個陣列用於儲存月份的中文名稱,現在有乙個需求,需要把月份的中文名按順序列印到控制台,也就是把months陣列裡的所有元素按順序輸出到控制台 當然我們可以使用12條println語句一條一條獲取並列印months中的元素,現在是乙個...
學習新時代程式語言Rust 15再放裡一條褲子
編寫好後 我們執行看下效果。這裡報了個錯誤,錯誤提示我們變數v是不可變的但我們卻要改變它。我們忘記使用mut關鍵字了吧?我們新增mut關鍵字,再執行看下效果。這次執行成功了,從輸出的結果我們可以看出 剛建立時vector的長度和容量一樣都是 因為我們在建立時就放裡了倆個元素。當往裡放了第三個元素後,...
選擇學習新程式語言的技巧
我經常被人問道 在開發工作中你是如何選擇使用哪種程式語言的呢?這是乙個合乎情理的問題,特別是對於那些在開發領域只有極少或者沒有的經驗的人而言。直接了當地說 使用某某語言。對我來說是乙個巨大的 但我還是認為解釋如何思考選擇工作所用的語言會更好一些。當你考慮學習哪種程式語言的時候,你需要問自己下列5個問...