【Rust】跟著社群資源學習Rust_(3)

更新於 發佈於 閱讀時間約 6 分鐘

前言

這次會記錄第三章與其他語言相比,較為特別一點的部分,畢竟大多數知識是共通的。

資料型態

Rust是靜態類型語言,意思是在編譯時期就需要知道每一個變數的型別。如果有看前幾篇文章,會發現有時候透過let定義後有宣告型別,有時候卻沒有,實際上是新語言的編譯器現在大多可以做型別推斷,即根據怎麼使用來回推實際值可能是什麼型別。因此,大多數的狀況下可以選擇不寫。

特別說一下,Java 10以後也加入var做型別推斷,所以這兩種方式都是可以的寫法,只不過在我接觸過的專案中,實務上還是比較少人這麼做...

var message = "Hello, Type Inference!";
String greeting = "Hello world";


Scalar Types 

照字面翻會直覺是純量,有其他語言背景的話對此不會太陌生,就是primitive type

  • Integer types: signed (i8, i16, i32, i64, i128, isize) and unsigned (u8, u16, u32, u64, u128, usize).
  • Floating-point types: f32 and f64.
  • Character types: char, which represents a single Unicode scalar value.
  • Boolean types: bool, which can be either true or false.


整數又分signunsign,找一下計算機概論的記憶:

  1. 1 byte = 8 bits
  2. 整數是4個byte,也就是4 * 8 = 32 bits
  3. 32個bits表示有32個格子可以放0或1,也就是有232種組合作表示
  4. 如果要分正負號,第一個byte作為區分,剩下231種組合,範圍要扣除0
  5. 其他做為整數的變形,其實就是short、long等差異
  6. isizeusize是根據程式運行在哪個架構上,決定採用哪種大小


浮點數一樣參考IEEE 754,Rust預設使用f64


Compound Types


組合型態有兩種:

  1. Tuple
  2. Array

Tuple的用法可以同時對多個變數賦值,類似Javascript中的Array destructuring,不需要一個一個逐項取出。

fn main() {
let x: (i32, f64, u8) = (500, 6.4, 1);
let five_hundred = x.0;
let six_point_four = x.1;
let one = x.2;
}


函式

直接看個例子:

fn main() {
let x = plus_one(5);

println!("The value of x is: {x}");
}

fn plus_one(x: i32) -> i32 {
return x + 1;
}
raw-image

基本上看過TypeScriptPython有撰寫type hint習慣的人,對這語法應該不陌生。

  • function簡寫為fn,預設均為private,可以加上pub變成public function
  • 型別定義在參數後面,須帶上:
  • 回傳值的定義接在->後面
  • return 顯式的提供回傳內容,或者不寫return並移除


流程控制

分支判斷

一般使用:

fn main() {
let number = 6;

if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}


三元運算類似寫法

fn main() {
let condition = true;
let number = if condition { 5 } else { 6 };

println!("The value of number is: {number}");
}


迴圈

  • loop
  • while
  • for


whilefor迴圈跟其他語言一樣,loop則是直接定義迴圈,沒特別加入跳出邏輯下,就會無窮執行下去。另一方面也可以給loop一個指定名稱,迴圈內可以根據分支控制狀況決定跳出到哪一層的loop,也就是label的用法,某種意義上來說也算是一種goto的使用。


留言
avatar-img
留言分享你的想法!
avatar-img
Err500
12會員
77內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
第三章資料型態與函式重點整理,涵蓋純量型別、整數型別、浮點數型別、字元型別、布林值型別、組合型別 (Tuple、Array)、函式定義、型別提示、流程控制 (分支判斷、迴圈),並與其他程式語言如 Java, JavaScript, Python, TypeScript作比較。
Thumbnail
第三章資料型態與函式重點整理,涵蓋純量型別、整數型別、浮點數型別、字元型別、布林值型別、組合型別 (Tuple、Array)、函式定義、型別提示、流程控制 (分支判斷、迴圈),並與其他程式語言如 Java, JavaScript, Python, TypeScript作比較。
Thumbnail
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q 整數與浮點數 在 Kotlin 中,整數和浮點數可以進行基本的數學運算,如:加、減、乘和除法等。 資料類型宣告方式 方法一
Thumbnail
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q 整數與浮點數 在 Kotlin 中,整數和浮點數可以進行基本的數學運算,如:加、減、乘和除法等。 資料類型宣告方式 方法一
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News