自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Rust 基礎(chǔ)系列 #4: Rust 中的數(shù)組和元組

開發(fā)
在 Rust 系列的第四篇中,學(xué)習(xí)復(fù)合數(shù)據(jù)類型、數(shù)組和元組。

在上一篇文章中,你學(xué)習(xí)到了 Rust 中的 標(biāo)量數(shù)據(jù)類型。它們是整型、浮點(diǎn)數(shù)、字符和布爾值。

在本文中,我們將會(huì)看看 Rust 編程語言中的復(fù)合數(shù)據(jù)類型。

Rust 中的復(fù)合數(shù)據(jù)類型是什么?

復(fù)合數(shù)據(jù)類型可以在一個(gè)變量中存儲(chǔ)多個(gè)值。這些值可以是相同的標(biāo)量數(shù)據(jù)類型,也可以是不同的標(biāo)量數(shù)據(jù)類型。

Rust 編程語言中有兩種這樣的數(shù)據(jù)類型:

  • 數(shù)組Array:存儲(chǔ)相同類型的多個(gè)值。
  • 元組Tuple:存儲(chǔ)多個(gè)值,可以是相同的類型,也可以是不同的類型。

讓我們了解一下它們吧!

Rust 中的數(shù)組

Rust 編程語言中的數(shù)組具有以下特性:

  • 每一個(gè)元素都必須是相同的類型
  • 數(shù)組有一個(gè)固定的長(zhǎng)度
  • 數(shù)組存儲(chǔ)在堆棧中,即其中存儲(chǔ)的數(shù)據(jù)可以被 迅速 訪問

創(chuàng)建數(shù)組的語法如下:

// 無類型聲明
let variable_name = [element1, element2, ..., elementn];
// 有類型聲明
let variable_name: [data_type; array_length] = [element1, element2, ..., elementn];

數(shù)組中的元素是在方括號(hào)中聲明的。要訪問數(shù)組的元素,需要在方括號(hào)中指定要訪問的索引。

來讓我們看一個(gè)例子來更好地理解這個(gè)。

fn main() {
    // 無類型聲明
    let greeting = ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!'];
    // 有類型聲明
    let pi: [i32; 10] = [1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
    for character in greeting {
        print!("{}", character);
    }
    println!("\nPi: 3.1{}{}{}{}", pi[0], pi[1], pi[2], pi[3]);
}

這里,我定義了一個(gè)字符數(shù)組和另一個(gè)存儲(chǔ) i32 類型的值的數(shù)組。greeting 數(shù)組以單獨(dú)字符的形式存儲(chǔ)了字符串 "Hello world!" 的字符。pi 數(shù)組以單獨(dú)數(shù)字的形式存儲(chǔ)了圓周率小數(shù)點(diǎn)后的前 10 位數(shù)字。

然后,我使用 for 循環(huán)打印了 greeting 數(shù)組的每個(gè)字符。(我很快就會(huì)講到循環(huán)。)然后,我打印了 pi 數(shù)組的前 4 個(gè)值。

Hello world!
Pi: 3.11415

如果你想創(chuàng)建一個(gè)數(shù)組,其中每個(gè)元素都是 y,并且出現(xiàn) x 次,你可以使用以下快捷方式在 Rust 中實(shí)現(xiàn):

let variable_name = [y; x];

來看一個(gè)演示……

fn main() {
    let a = [10; 5];
    for i in a {
        print!("{i} ");
    }
    println!("");
}

我創(chuàng)建了一個(gè)變量 a,它的長(zhǎng)度為 5。數(shù)組中的每個(gè)元素都是 '10'。我通過使用 for 循環(huán)打印數(shù)組的每個(gè)元素來驗(yàn)證這一點(diǎn)。

它的輸出如下:

10 10 10 10 10

?? 作為練習(xí),嘗試創(chuàng)建一個(gè)長(zhǎng)度為 x 的數(shù)組,然后嘗試訪問數(shù)組的第 x+1 個(gè)元素。看看會(huì)發(fā)生什么。

Rust 中的元組

Rust 中的元組具有以下特性:

  • 就像數(shù)組一樣,元組的長(zhǎng)度是固定的
  • 元素可以是相同的/不同的標(biāo)量數(shù)據(jù)類型
  • 元組存儲(chǔ)在堆棧中,所以訪問速度更快

創(chuàng)建元組的語法如下:

// 無類型聲明
let variable_name = (element1, element2, ..., element3);
// 有類型聲明
let variable_name: (data_type, ..., data_type) = (element1, element2, ..., element3);

元組的元素寫在圓括號(hào)中。要訪問元素,使用點(diǎn)運(yùn)算符,后跟該元素的索引。

fn main() {
    let a = (38, 923.329, true);
    let b: (char, i32, f64, bool) = ('r', 43, 3.14, false);
    println!("a.0: {}, a.1: {}, a.2: {}", a.0, a.1, a.2);
    println!("b.0: {}, b.1: {}, b.2: {}, b.3: {}", b.0, b.1, b.2, b.3);
    // 元組解構(gòu)
    let pixel = (50, 0, 200);
    let (red, green, blue) = pixel;
    println!("red: {}, green: {}, blue: {}", red, green, blue);
}

在上面的代碼中,我在第 2 行和第 3 行聲明了兩個(gè)元組。它們只包含我當(dāng)時(shí)想到的隨機(jī)值。但是仔細(xì)看,兩個(gè)元組中每個(gè)元素的數(shù)據(jù)類型都不同。然后,在第 5 行和第 6 行,我打印了兩個(gè)元組的每個(gè)元素。

在第 9 行,我聲明了一個(gè)名為 pixel 的元組,它有 3 個(gè)元素。每個(gè)元素都是組成像素的顏色紅色、綠色和藍(lán)色的亮度值。這個(gè)范圍是從 0 到 255。所以,理想情況下,我會(huì)聲明類型為 (u8, u8, u8),但是在學(xué)習(xí)代碼時(shí)不需要這樣優(yōu)化 ; )

然后,在第 10 行,我“解構(gòu)”了 pixel 元組的每個(gè)值,并將其存儲(chǔ)在單獨(dú)的變量 red、green 和 blue 中。然后,我打印了 red、green 和 blue 變量的值,而不是 pixel 元組的值。

讓我們看看輸出……

a.0: 38, a.1: 923.329, a.2: true
b.0: r, b.1: 43, b.2: 3.14, b.3: false
red: 50, green: 0, blue: 200

看起來不錯(cuò) : )

額外內(nèi)容:切片

準(zhǔn)確的來說,切片Slice

一個(gè)切片由三個(gè)元素組成:

  • 一個(gè)初始索引
  • 切片運(yùn)算符(.. 或 ..=
  • 一個(gè)結(jié)束索引

接下來是數(shù)組切片的一個(gè)示例:

fn main() {
    let my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    let my_slice = &my_array[0..4];
    for element in my_slice {
        println!("{element}");
    }
}

就像 C 和 C++ 一樣,& 用于存儲(chǔ)變量的引用(而不是原始指針)。所以 &my_array 意味著對(duì)變量 my_array 的引用。

然后,來看看切片。切片由 [0..4] 表示。這里,0 是切片開始的索引。而 4 是切片結(jié)束的索引。這里的 4 是一個(gè)非包含索引。

這是程序輸出,以更好地理解正在發(fā)生的事情:

0
1
2
3

如果你想要一個(gè) 包含 范圍,你可以使用 ..= 作為包含范圍的切片運(yùn)算符。

fn main() {
    let my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    let my_slice = &my_array[0..=4];
    for element in my_slice {
        println!("{element}");
    }
}

現(xiàn)在,這個(gè)范圍是從第 0 個(gè)元素到第 4 個(gè)元素,下面是輸出來證明這一點(diǎn):

0
1
2
3
4

總結(jié)

本文講到了 Rust 編程語言中的復(fù)合數(shù)據(jù)類型。你學(xué)習(xí)了如何聲明和訪問存儲(chǔ)在數(shù)組和元組類型中的值。此外,你還了解了切片“類型”,以及如何解構(gòu)元組。

在下一章中,你將學(xué)習(xí)如何在 Rust 程序中使用函數(shù)。敬請(qǐng)關(guān)注。

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2023-05-29 16:25:59

Rust函數(shù)

2023-05-14 18:56:50

Rust數(shù)據(jù)類型

2023-06-15 17:00:11

Rust循環(huán)

2023-05-04 07:33:39

Rust變量常量

2023-06-23 14:15:09

Rust編程

2023-04-10 18:03:18

Rust編程語言

2023-06-11 17:25:13

Rust條件語句

2021-07-07 21:40:46

Rust函數(shù)勸退

2024-07-26 21:55:39

RustRESTfulAPI

2024-04-26 00:00:00

Rust檢查器代碼

2024-11-08 09:19:28

2023-11-02 18:45:00

Rust編程表達(dá)式

2024-11-08 12:42:34

Rustmapfilter

2024-02-26 07:26:27

RustC++開發(fā)

2024-03-19 08:54:20

Rust語言內(nèi)存管理應(yīng)用程序開發(fā)

2022-12-30 11:05:40

Rust代碼

2024-04-10 09:28:25

EqRustPartialEq

2023-01-15 17:11:44

Rust

2024-01-05 17:41:36

Rust編程循環(huán)

2020-07-15 08:00:52

Rust語言技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)