【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
13會員
68內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
前言 上一篇已經可以用Playground練習Rust,文件中的第一章就不細看了。至於第二章是實作做一個猜數字遊戲,讀取使用者輸入,跟亂數產生的數字比大小,輸出比較結果,有興趣可以自行練習,因此接續從第三章開始。
學習 Rust 程式語言的心得分享,文章內容著重在語言設計層面,並使用線上 Playground 進行學習與練習,介紹了基本輸出、變數定義等概念。
前言 上一篇已經可以用Playground練習Rust,文件中的第一章就不細看了。至於第二章是實作做一個猜數字遊戲,讀取使用者輸入,跟亂數產生的數字比大小,輸出比較結果,有興趣可以自行練習,因此接續從第三章開始。
學習 Rust 程式語言的心得分享,文章內容著重在語言設計層面,並使用線上 Playground 進行學習與練習,介紹了基本輸出、變數定義等概念。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…