iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

也有英文版文章
Also this tutorial has been written in English
Check out my Medium

Rust的中文翻譯以參考這份檔案為主.


目錄

  • 枚舉(Enum)
  • 元組(Tuples)

枚舉(Enum)

結構體(Struct)和枚舉(Enum)是兩個不可分割的存在,今天終於介紹到枚舉(Enum)。
一個枚舉的值可以是任何可能的變量之一。

" Where structs give you a way of grouping together related fields and data, like a Rectangle with its width and height, enums give you a way of saying a value is one of a possible set of values. "- Book of The Rust Programming Language

  • 結構體(Struct)給予你一個方法,將檔案和相關領域團結組織起來,就像長方形有長和寬。
  • 枚舉(Enum)給予你一個方法,去說明一個值只是所有可能的值中的其中之一。

Example 01 - 基本用法 I

Again, 枚舉中的資料只是無數可能性的其中之一。

  • 建立方向枚舉(Enum)定義上下左右,四個方向
  • 到main(),使用match決定輸出data,若你選定的方向符合match其中之一,即輸出相同顏色
enum Direction {
    Left,
    Right,
    Up,
    Down,
}

fn main() {
    let go = Direction::Up;
    match go {
        Direction::Up => println!("上!"),
        Direction::Left => println!("左!"),
        Direction::Right => println!("右!"),
        Direction::Down => println!("下!"),
    }
}

/* 
上!
*/

Example 02 - 基本用法 II

  • 先建立一個enum定義顏色有哪些
  • 建一個函式輸出顏色data,避免main()過於混亂
  • 來到main(),輸出你選定的顏色
enum Colour {
    Red,
    Yellow,
    Blue,
}

fn print_color(my_colour: Colour) {
    match my_colour {
        Colour::Red => println!("red"),
        Colour::Yellow => println!("yellow"),
        Colour::Blue => println!("blue"),
    }
}

fn main() {
    print_color(Colour::Blue);
}

Example 03 - 調飲時間 II

接續昨天的例子,今天結合了枚舉(Enum)和結構體(Struct),初步了解如何使用這些工具。

// 口味
enum Flavour {
    Sweet,
    Sparkling,
    Fruity,
}

// 飲料口味 + 盎司
struct Drink {
    flavour: Flavour,
    fluid_oz: f64,
}

// 輸出調飲資訊(data)
fn print_drinks(the_drink: Drink) {
    match the_drink.flavour {
        Flavour::Sweet => println!("Sweet Drink!"),
        Flavour::Sparkling => println!("Sparkling Drink!"),
        Flavour::Fruity => println!("Fruity Drink!"),
    }
    println!("Oz: {:?}", the_drink.fluid_oz);
}

// Driver code
fn main() {
    let a: Drink = Drink {
        flavour: Flavour::Sparkling,
        fluid_oz: 10.5,
    };
    print_drinks(a);
}


元組(Tuples)

Tuple定義

W3School - Python Tuples

以Python來說,

  • 元組(Tuple)是一個變數,可儲存不同值(Value)
  • 元組(Tuple)是一個組合,有排序性(ordered) & 不可變動的(unchangable)
  • 元組(Tuple)允許重複的值(allow duplicate values)
  • 被圓括號包裹🤗

所以Rust呢?

語法(Syntax)

let (x, y, z) = (1, 2, 3);

BTW.
這個未來會再提到,不過其實你已經身在Rust細思極恐的包圍網設計概念中了...

let PATTERN = EXPRESSION;

Example 01

fn coordinate() -> (i32, i32) {
    (1, 7)
}

fn main() {
    let (x, y) = coordinate();

    if y > 5 {
        println!(">5");
    } else if y < 5 {
        println!("<5");
    } else {
        println!("=5");
    }
}

/*
output:
5
*/

參考資料 Reference

Nice 教學影片


上一篇
Day 07 - 結構體(Struct)
下一篇
Day 09 - 記憶體Memory - 所有權(Ownership) & 執行(Implement)
系列文
Let's go Rusty. 從0開始了解Rust.15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言