国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Rust 學(xué)習(xí)筆記 - 變量聲明與使用

這篇具有很好參考價(jià)值的文章主要介紹了Rust 學(xué)習(xí)筆記 - 變量聲明與使用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

任何一門編程語言幾乎都脫離不了:變量、基本類型、函數(shù)、注釋、循環(huán)、條件判斷,這是一門編程語言的語法基礎(chǔ),只有當(dāng)掌握這些基礎(chǔ)語法及概念才能更好的學(xué)習(xí) Rust。

變量介紹

Rust 是一種強(qiáng)類型語言,但在聲明變量時(shí),不總是需要顯式聲明類型,這是因?yàn)?Rust 的編譯器有類型推斷系統(tǒng)。當(dāng)聲明一個(gè)變量而沒有指定類型時(shí),Rust 編譯器會(huì)根據(jù)變量的初始值自動(dòng)推斷出它的類型。

在強(qiáng)類型語言中,每個(gè)變量和常量都必須有一個(gè)明確的類型,而且類型在編譯時(shí)就已經(jīng)確定。Rust 編譯器非常嚴(yán)格,不允許不同類型的數(shù)據(jù)隱式轉(zhuǎn)換。如果需要將一個(gè)類型轉(zhuǎn)換為另一個(gè)類型,必須使用明確的類型轉(zhuǎn)換方法。這一特性使得 Rust 在編譯時(shí)能夠提供類型檢查,有助于避免許多常見的運(yùn)行時(shí)錯(cuò)誤。

不可變變量 (Immutable)

與其他編程語言(如:Java、Python、JS)不同,默認(rèn)情況下 Rust 中的變量是不可變的 (神奇,變量不可變??)。

這一特性意味著變量一旦被賦值后,在變量的整個(gè)生命周期內(nèi)它的值就不能被改變,嘗試修改一個(gè)不可變變量的值會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤。

示例:

let x = 5;
x = 6; // 這會(huì)導(dǎo)致編譯錯(cuò)誤,因?yàn)?x 是不可變的

可變變量 (Mutable)

  • 通過使用?mut?關(guān)鍵字,可以聲明一個(gè)可變的變量,這樣的變量允許其值在后續(xù)被修改。
  • 但需要注意,rust 作為強(qiáng)類型語言,修改變量時(shí)不允許賦值其他類型的值

示例:

let mut x = 5;
x = 6; // 這是允許的,因?yàn)?x 是可變的

// error[E0308]: mismatched types
x = 3.1415926; // 3.1415926 是浮點(diǎn)數(shù),x 聲明時(shí)是整形

變量遮蔽(Shadowing)

變量遮蔽是 Rust 中的一個(gè)特性,有些文檔或教程將 Shadowing 稱為:隱藏、重影,它允許在相同作用域中,使用相同的名稱聲明一個(gè)新變量。這個(gè)新聲明的變量“遮蔽”了先前聲明的同名變量。更準(zhǔn)確地說,當(dāng)新變量被引入時(shí),它會(huì)使得與之同名的先前變量不再可見,直到新變量離開作用域前,無法訪問被遮蔽的變量。這與變量重新賦值不同,因?yàn)樗鼘?shí)際上是在創(chuàng)建一個(gè)全新的變量。

遮蔽的好處是可以重新使用更有意義或適用于當(dāng)前上下文的變量名,遮蔽通常用于轉(zhuǎn)換值的類型或給變量一個(gè)新值,而這樣做并不影響原來變量的不可變性。

示例1:

let x = 5;
let x = x + 1; // 遮蔽前一個(gè) x 變量
let x = "現(xiàn)在 x 是一個(gè)字符串"; // 再次遮蔽,改變了值的類型

示例2:

fn main() {
    let x = 5;
    let x = x + 1;

    {
	    // 在使用花括號(hào)創(chuàng)建的內(nèi)部作用域內(nèi),變量 `x` 被遮蔽
        let x = x * 2;
        println!("x 在當(dāng)前作用域的值是: {x}"); // 12
    }
	// 當(dāng)作用域結(jié)束后,內(nèi)部 shadowing 的作用域也結(jié)束了,`x` 又返回到 `6`
    println!("x 在當(dāng)前作用域的值是: {x}"); // 6
}

常量 (Constants)

  • 常量使用?const?關(guān)鍵字聲明,并且它們總是不可變的。
  • 常量必須在聲明時(shí)就賦值,而且它們的類型必須顯式聲明。
  • 常量名應(yīng)該全部大寫,否則會(huì)報(bào)警告。

示例:

const MAX_POINT: u32 = 100_000;

不可變變量 與 常量的區(qū)別

在 Rust 中,雖然不可變變量和常量都不能在聲明后被修改,但它們之間存在幾個(gè)主要區(qū)別:

類型標(biāo)注

  • 聲明常量時(shí),必須顯式給出類型標(biāo)注
  • 不可變變量通常可以依賴 Rust 的類型推斷,類型標(biāo)注是可選的。

示例:

// ok!
let x = 1000;
// error: missing type for `const` item
const CONST_VAL = 1000; 

值的賦予時(shí)機(jī)

  • 常量在編譯時(shí)被賦值,且必須是一個(gè)恒定的表達(dá)式,不能是運(yùn)行時(shí)的結(jié)果。
  • 不可變變量可以在運(yùn)行時(shí)被初始化,其中的值可以是在運(yùn)行時(shí)才能確定的表達(dá)式的結(jié)果。

示例1:

fn get_val() -> i32 {
    1000
}

fn main() {
	// ok!
    let x = get_val(); 
    // const 不能接收運(yùn)行時(shí)的結(jié)果
    // error[E0015]: cannot call non-const fn `get_val` in constants
    const CONST_VAL: i32 = get_val(); 
}

示例2:

fn main() {
	// let 允許先聲明,后賦值
    let x;
    x = 1000; 

	// error: free constant item without body
	const CONST_VAL: i32; 
	// error[E0070]: invalid left-hand side of assignment
	CONST_VAL = 1000;
}

變量遮蔽

  • 不可變變量可以通過變量遮蔽進(jìn)行重新賦值
  • 常量無法進(jìn)行變量遮蔽,相同常量名重復(fù)定義時(shí)會(huì)報(bào)錯(cuò)

示例:

    let x = 1000;
     // ok!
    let x = "str";

    const CONST_VAL: i32 = 1000;
    //  // error[E0428]: the name `CONST_VAL` is defined multiple times
    const CONST_VAL: &str = "str";

作用域

  • let 關(guān)鍵字用于在局部作用域中聲明變量,如函數(shù)或代碼塊內(nèi)部,而不能用于全局作用域。
  • const 關(guān)鍵字可以用于全局作用域中聲明常量,也可以在局部作用域中使用。

示例:

const GLOBAL_CONST: i32 = 10; // 全局常量,可以在整個(gè)程序中訪問

// error: expected item, found keyword `let`
// let x = 1000; // 不允許聲明全局變量
fn main() {
    let local_var = 5; // 局部變量,只能在 main 函數(shù)內(nèi)訪問
    println!("常量: {}", GLOBAL_CONST);
    println!("局部變量: {}", local_var);
}

fn another_function() {
    // local_var 在這里是不可見的,因?yàn)樗辉谧饔糜騼?nèi)
    // GLOBAL_CONST 仍然是可見的
    println!("同一個(gè)常量: {}", GLOBAL_CONST);
}

結(jié)語

本文深入介紹了 Rust 中的變量聲明,特別是它獨(dú)有的不可變變量變量遮蔽特性。相較于其它編程語言,這些概念初看可能會(huì)給變量操作帶來復(fù)雜性。然而,隨著使用的深入,這些概念將變得清晰明了,你將發(fā)現(xiàn)它們實(shí)際上是 Rust 強(qiáng)大功能和安全性的體現(xiàn),而且并不復(fù)雜。文章來源地址http://www.zghlxwxcb.cn/news/detail-827670.html

到了這里,關(guān)于Rust 學(xué)習(xí)筆記 - 變量聲明與使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Rust中的宏:聲明宏和過程宏

    宏是Rust語言中的一個(gè)重要特性,它允許開發(fā)人員編寫可重用的代碼,以便在編譯時(shí)擴(kuò)展和生成新的代碼。宏可以幫助開發(fā)人員減少重復(fù)代碼,并提高代碼的可讀性和可維護(hù)性。Rust中有兩種類型的宏:聲明宏和過程宏。 聲明宏是一種用于定義新的宏的語法。它使用 macro_rules

    2023年04月22日
    瀏覽(18)
  • Rust 學(xué)習(xí)筆記 - 注釋全解

    Rust 學(xué)習(xí)筆記 - 注釋全解

    和其他編程語言一樣,Rust 也提供了代碼注釋的功能,注釋用于解釋代碼的作用和目的,幫助開發(fā)者理解代碼的行為,編譯器在編譯時(shí)會(huì)忽略它們。 單行注釋以兩個(gè)斜杠 ( // ) 開始,只影響它們后面直到行末的內(nèi)容。單行注釋通常用于對代碼行或代碼塊的短小說明。 多行注釋

    2024年02月19日
    瀏覽(21)
  • Rust 學(xué)習(xí)筆記(持續(xù)更新中…)

    Rust 學(xué)習(xí)筆記(持續(xù)更新中…)

    運(yùn)行 Rust 程序之前必須先編譯,命令為: rustc 源文件名 ?- rustc main.rs 編譯成功之后,會(huì)生成一個(gè)二進(jìn)制文件 - 在 Windows 上還會(huì)生產(chǎn)一個(gè) .pdb 文件? ,里面包含調(diào)試信息 Rust 是 ahead-of-time 編譯的語言?- 可以先編譯程序,然后把可執(zhí)行文件交給別人運(yùn)行(無需安裝 Rust ) rustc

    2024年02月10日
    瀏覽(30)
  • Rust學(xué)習(xí)筆記005:結(jié)構(gòu)體 struct

    Rust學(xué)習(xí)筆記005:結(jié)構(gòu)體 struct

    ????????在 Rust 中, struct 是一種用于創(chuàng)建自定義數(shù)據(jù)類型的,它允許你定義和組織數(shù)據(jù)的結(jié)構(gòu)。 struct 可以包含多個(gè)不同類型的字段(fields),每個(gè)字段都有一個(gè)名稱和一個(gè)類型。 ????????下面是一個(gè)簡單的例子,展示了如何定義和使用 struct : 元組結(jié)構(gòu)體(

    2024年02月03日
    瀏覽(29)
  • Rust 學(xué)習(xí)筆記 - 流程控制 與 Range 類型

    任何一門編程語言幾乎都脫離不了:變量、基本類型、函數(shù)、注釋、循環(huán)、條件判斷,這是一門編程語言的語法基礎(chǔ),只有當(dāng)掌握這些基礎(chǔ)語法及概念才能更好的學(xué)習(xí) Rust。 if 語句在其他語言中很常見,這里不再多做解釋,看注釋即可。 if ?表達(dá)式也支持 if...else if...else 語句

    2024年02月20日
    瀏覽(30)
  • Rust教程:How to Rust-變量

    本文為第1篇 本專欄是優(yōu)質(zhì)Rust技術(shù)專欄,推薦精通一門技術(shù)棧的蟹友,不建議完全無計(jì)算機(jī)基礎(chǔ)的同學(xué) 感謝Rust圣經(jīng)開源社區(qū)的同學(xué),為后來者提供了非常優(yōu)秀的Rust學(xué)習(xí)資源 本文使用: 操作系統(tǒng)macOS Sonoma 14 / Apple M1 編譯器:Rustc Cargo 感謝一路相伴的朋友們,感謝你們的支持

    2024年03月15日
    瀏覽(60)
  • Rust 筆記:Rust 語言中哈希結(jié)構(gòu)(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用

    Rust 筆記 Rust 語言中映射(HashMap)與集合(HashSet)及其用法 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 郵箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130876735 【介紹】:本文介紹 Rust 中哈希結(jié)構(gòu)相關(guān)概念及其使用。在 R

    2024年02月09日
    瀏覽(27)
  • 【Rust】Rust學(xué)習(xí) 第五章使用結(jié)構(gòu)體組織相關(guān)聯(lián)的數(shù)據(jù)

    【Rust】Rust學(xué)習(xí) 第五章使用結(jié)構(gòu)體組織相關(guān)聯(lián)的數(shù)據(jù)

    定義結(jié)構(gòu)體,需要使用? struct ?并為整個(gè)結(jié)構(gòu)體提供一個(gè)名字。結(jié)構(gòu)體的名字需要描述它所組合的數(shù)據(jù)的意義。接著,在大括號(hào)中,定義每一部分?jǐn)?shù)據(jù)的名字和類型,我們稱為? 字段 ( field )。 實(shí)例化(不可變變量) 可變變量 字段初始化簡寫語法 通過已經(jīng)存著的變

    2024年02月13日
    瀏覽(33)
  • 【Rust 基礎(chǔ)篇】Rust可變靜態(tài)變量:全局狀態(tài)的可變性管理

    Rust是一種以安全性和高效性著稱的系統(tǒng)級(jí)編程語言,其設(shè)計(jì)哲學(xué)是在不損失性能的前提下,保障代碼的內(nèi)存安全和線程安全。為了實(shí)現(xiàn)這一目標(biāo),Rust引入了\\\"所有權(quán)系統(tǒng)\\\"、\\\"借用檢查器\\\"等特性,有效地避免了常見的內(nèi)存安全問題。然而,有時(shí)候我們需要在程序的整個(gè)生命周期

    2024年02月15日
    瀏覽(20)
  • Rust-變量

    Rust-變量

    Rust的變量必須先聲明后使用。對于局部變量,最常見的聲明語法為: 與傳統(tǒng)的C/C++語言相比,Rust的變量聲明語法不同。這樣設(shè)計(jì)主要有以下幾個(gè)方面的考慮。 語法分析更容易 從語法分析的角度來說,Rust的變量聲明語法比C/C++語言的簡單,局部變量聲明一定是以let開頭

    2024年01月21日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包