先來看這個簡單的程序
1.奇怪的關鍵字
fn=function 函數
mut=mutability 變異性,反義詞是immutability 不變性。
2.變量定義
這和其它語言不太一樣,普通的語言里變量默認為可變,如果不可變則要標注為readonly
有些語言壓根沒有不可變這個設計,所有變量都可變。
rust中,let定義的變量為immutability ,不可變,類似於其它語言中的readonly
所以圖中的x 為 只讀變量,不可變
圖中y可以賦值
並且rust 允許覆蓋定義,圖中x定義了兩次,之前的定義會被覆蓋掉。
rust號稱重視明確性的語言,但是允許覆蓋定義難道不會增加不明確性嗎?我才剛開始學習,理解不深,這個問題我先放着,以后或許會有答案。
3.字符串格式化輸出
用{} 格式化輸出了x,y
rust 的字符串設計有一點別扭,查閱資料顯示
rust有char,並且char是四字節的,也就是utf32
但是String並不是 vec<char> 而是 vec<u8> 也就是string 是 utf8
所以string 並不能作為char列表訪問,而是通過 "नमस्ते".chars()函數,轉換為char的列表
這里有個重點記錄一下 rust char 是utf32,string是utf8
因為存在utf32也無法一個char表示的字符,所以還是不能認為一個char就是一個字符。但是這已經覆蓋了99.99%,我們中文的大部分文字一個utf16字夠表達了,超出的那些文字很難遇到。
好讓我們寫一個更加復雜一點的程序
3.for循環
rust的for 循環 只有foreach一種形態,沒有c語言那種for(var i=0;i<10;i++)的形式
1..10是表示一個 1到10的迭代器,不包括10
他的for語句不要小括號
continue 和 break 可以用於跳出循環,和其它語言相似
4.if表達式
if 表達式也和其它語言相似,不同的是 if 表達式的條件部分可以沒有括號,也可以有。
但是大括號不可以省略
不允許 if(y==3) continue;這種寫法
5.循環標簽
rust 提供了循環標簽這個概念
循環可以帶一個標簽,這樣做 continue 和 break的時候,可以直接指定要跳出哪一層循環,這樣在嵌套循環的情況下可以簡化邏輯,而且還更加貼近機器語言行為。
再結合wasm的loops設計一看,嗯,你們搞rust和wasm肯定勾兌了不少。
再來個復雜一點的程序,輸出個乘法口訣表吧
6.USE語句
開始寫復雜的程序就必須借助庫了,這里我們使用了rust標准庫的stdout
可以通過use std::io::* 簡單解決問題
7.字符串相關
這里通過format 宏連接了字符串,然后用as_bytes()將他變成一個
&[u8]類型,應為stdout().write();要求這個類型
8.expect
expect(“”)這部分不寫也可以,這是rust常用的一個封裝,返回result,這個函數可能會有失敗的情況
.expect(“”)表示失敗時輸出其中的字符串
rust的很多方法都返回result,可能會失敗。當然也可以用if 判斷result
.expect(“”)是rust提供的一種快速的異常處理方法。
也挺好
第一個rust 程序,完成