從基本功開始打起 - 變數
從今天開始會試著跟大家說明 Rust 的基本知識,只要能夠知道這些基本的話,相信就能掌握 Rust 了!應該吧?
宣告變數
首先會先從變數開始,在 Rust 宣告變數只要使用關鍵字 let
,例如我們要宣告一個變數 count,並且給予值為 20 的話,就可以這樣寫:
1 | fn main() { |
然後記得後面要加 ;
,這邊有一個比較特別的是預設情況下,變數的值是不能再改變的。
型別
Rust 是一種強型別的語言,代表要指定變數的型別,然後在編譯時檢查型別是否正確。
那麼為什麼上面的例子沒有寫型別也可以正確編譯呢?
這是因為 Rust 有 type inference,也就是型別推斷的功能。
如果能夠判別型別的話,就不需要寫出來。
但如果要寫的話,就可以這樣寫:
1 | let count: i32 = 20; |
這一段的意思是,建立一個變數 count
,綁定型別為 i32
,而賦予的值為 20
。關於型別的部分會在之後有完整的篇幅說明。
模式
Rust 提供了一種叫做模式 (Patterns) 的宣告變數技巧,使用方法如下:
1 | let (x, y) = (10, 20) |
這樣短短一行就可以同時宣告 x
和 y
,並且分別賦予值為 10
和 20
。
可變性
在 Rust 的世界中,一旦幫變數賦予值的話,預設是不能再變更值的,這在其他的語言中非常少見,大多數的語言都是可以再次更改變數的值。
那麼為什麼 Rust 會這樣設計呢?
這邊又要提到 Rust 的特點:安全、併發和速度。
透過不可變的特性,增加了安全性和高併發,編譯器可以對不會改變的數據進行優化,也因此提高了速度。
但是變數如果不能變更值的話,那麼我大概就學到這裡就停止了(誤
接著來試試看執行以下的程式碼:
1 | fn main() { |
我們可以看到 VSCode 會先提示有紅色毛毛蟲,代表 Rust 跟你說目前有錯誤。
然後我們把滑鼠移過去,說不能重複給予值給不可變的變數,並且建議你可以將變數改綁定為可變。
從圖中的建議我們可以得知,只要在宣告變數時,在變數的前面加上關鍵字 mut
,就可以讓變數改變值,所以可以改成這樣:
1 | fn main() { |
這樣執行出來的結果就會得到 10。
常數
雖然上面提到的不可變的變數可以綁定為可變,但 Rust 還有另一種宣告的方式是真正無法改變的,那就是常數。
宣告方式為使用關鍵字 const
,常數名稱為大寫,並且使用 snake case 命名,然後加上型別,例如:
1 | const MAX_COUNT: i32 = 10; |
這樣就可以宣告一個常數了。
對了,還有一點小提醒,常數是沒辦法加上 mut
的,因為你既然都要使用常數了,也就代表不會有變更值的需求,所以你如果硬是要加上 mut
的話,還是會報錯給你看喔~