日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Rust編程基礎(chǔ)之變量與可變性

來(lái)源: 責(zé)編: 時(shí)間:2023-10-31 10:26:26 318觀看
導(dǎo)讀1.Rust變量在Rust語(yǔ)言中, 變量默認(rèn)是不可改變的(immutable), 這是Rust提供給我們的眾多優(yōu)勢(shì)之一, 讓我們可以充分利用Rust提供的安全性和簡(jiǎn)單并發(fā)性來(lái)編寫代碼。當(dāng)變量不可變時(shí), 一旦值被綁定在一個(gè)名稱上, 就不能改

1.Rust變量

在Rust語(yǔ)言中, 變量默認(rèn)是不可改變的(immutable), 這是Rust提供給我們的眾多優(yōu)勢(shì)之一, 讓我們可以充分利用Rust提供的安全性和簡(jiǎn)單并發(fā)性來(lái)編寫代碼。N9s28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)變量不可變時(shí), 一旦值被綁定在一個(gè)名稱上, 就不能改變這個(gè)值。下面是一段代碼的例子:N9s28資訊網(wǎng)——每日最新資訊28at.com

fn main() {    let x = 1;    println!("The value of x is: {x}");    x = 2;    println!("The value of x is: {x}");}

這段代碼如果是其它高級(jí)語(yǔ)言, 看不出有什么問(wèn)題, 定義了一個(gè)變量,先賦值1,然后打印輸出, 再將該值賦值2, 再打印該值的內(nèi)容。N9s28資訊網(wǎng)——每日最新資訊28at.com

但如果你使用的是支持Rust開(kāi)發(fā)語(yǔ)言的IDE, 在這段代碼中會(huì)給出一個(gè)錯(cuò)誤標(biāo)識(shí), 將鼠標(biāo)移到上面,會(huì)看到一段錯(cuò)誤提示,如圖:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

錯(cuò)誤含義就是不可多次為一個(gè)不可變的變量賦新值。N9s28資訊網(wǎng)——每日最新資訊28at.com

如果我們使用Rust自帶的編譯器進(jìn)行編譯, Rust會(huì)很貼心的告訴我們錯(cuò)誤在哪個(gè)位置, 錯(cuò)誤的原因, 錯(cuò)誤怎么糾正,如圖:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

在上圖的提示中, Rust編譯器建議我們想改變變量的值, 應(yīng)該在let后面加上mut關(guān)鍵字, 這樣變量就可以被改變了。N9s28資訊網(wǎng)——每日最新資訊28at.com

修改代碼如下:N9s28資訊網(wǎng)——每日最新資訊28at.com

fn main() {    let mut x = 1;    println!("The value of x is: {x}");    x = 2;    println!("The value of x is: {x}");}

再次編譯, 可以看到已經(jīng)正確打印了變量?jī)?nèi)容,如圖:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

2.Rust常量

類似于不可變變量, 常量(constants)是綁定到一個(gè)名稱的不允許改變的值, 不過(guò)常量和變量還是有一定的區(qū)別。N9s28資訊網(wǎng)——每日最新資訊28at.com

首先, 不允許對(duì)常量使用mut, 常量不僅默認(rèn)不可變, 而且總是不可變。聲明常量使用const關(guān)鍵字而不是let, 并且必須注明值的類型。N9s28資訊網(wǎng)——每日最新資訊28at.com

常量可以在任何作用域中聲明,包括全局作用域, 這在一個(gè)值需要被很多部分的代碼用到時(shí)很有用。N9s28資訊網(wǎng)——每日最新資訊28at.com

最后一個(gè)區(qū)別是,常量只能被設(shè)置為常量表達(dá)式,而不可以是其它任何只能在運(yùn)行時(shí)計(jì)算出的值。N9s28資訊網(wǎng)——每日最新資訊28at.com

以下是一個(gè)常量的聲明例子:N9s28資訊網(wǎng)——每日最新資訊28at.com

const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 *3;

常量的名稱是 THREE_HOURS_IN_SECONDS,它的值被設(shè)置為 60(一分鐘內(nèi)的秒數(shù))乘以 60(一小時(shí)內(nèi)的分鐘數(shù))再乘以 3(我們?cè)谶@個(gè)程序中要計(jì)算的小時(shí)數(shù))的結(jié)果。Rust 對(duì)常量的命名約定是在單詞之間使用全大寫加下劃線。編譯器能夠在編譯時(shí)計(jì)算一組有限的操作,這使我們可以選擇以更容易理解和驗(yàn)證的方式寫出此值,而不是將此常量設(shè)置為值 10,800。N9s28資訊網(wǎng)——每日最新資訊28at.com

在聲明它的作用域之中,常量在整個(gè)程序生命周期中都有效,此屬性使得常量可以作為多處代碼使用的全局范圍的值,例如一個(gè)游戲中所有玩家可以獲取的最高分或者光速。N9s28資訊網(wǎng)——每日最新資訊28at.com

將遍布于應(yīng)用程序中的硬編碼值聲明為常量,能幫助后來(lái)的代碼維護(hù)人員了解值的意圖。如果將來(lái)需要修改硬編碼值,也只需修改匯聚于一處的硬編碼值。N9s28資訊網(wǎng)——每日最新資訊28at.com

3.隱藏

在Rust中,我們可以定義一個(gè)與之前變量同名的新變量, 在這種情況下, 稱之為第一個(gè)變量被第二個(gè)隱藏(Shadowing)了, 這意味著當(dāng)我們使用變量的名稱時(shí), 編譯器將看到第二個(gè)變量。實(shí)際上,第二個(gè)變量“遮蔽”了第一個(gè)變量,此時(shí)任何使用該變量名的行為中都會(huì)視為是在使用第二個(gè)變量,直到第二個(gè)變量自己也被隱藏或第二個(gè)變量的作用域結(jié)束。可以用相同變量名稱來(lái)隱藏一個(gè)變量,以及重復(fù)使用let關(guān)鍵字來(lái)多次隱藏。N9s28資訊網(wǎng)——每日最新資訊28at.com

看一段下面的代碼:N9s28資訊網(wǎng)——每日最新資訊28at.com

fn main() {    let x = 5;    let x = x + 1;    {        // 進(jìn)入隱藏作用域        let x = x * 2;        println!("The value of x in the inner scope is: {x}");    }    println!("The value of x is: {x}");}

我們先在代碼下個(gè)斷點(diǎn), 通過(guò)調(diào)試狀態(tài)觀察變量值的情況,如圖:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

從上圖中可以看到, 進(jìn)入花括號(hào)作用域后, x 經(jīng)過(guò)計(jì)算已經(jīng)變成了12, 所以第一個(gè)打印的應(yīng)該是12。N9s28資訊網(wǎng)——每日最新資訊28at.com

如果出了作用域會(huì)怎樣呢, 繼續(xù)單步走一下退出作用域,如圖:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

可以看到, 出了作用域之后, X的值又變成了6, 因此第二個(gè)打印語(yǔ)句的結(jié)果就是6。N9s28資訊網(wǎng)——每日最新資訊28at.com

因此最終輸出如下:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

隱藏與將變量標(biāo)記為 mut 是有區(qū)別的。當(dāng)不小心嘗試對(duì)變量重新賦值時(shí),如果沒(méi)有使用 let 關(guān)鍵字,就會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤。通過(guò)使用 let,我們可以用這個(gè)值進(jìn)行一些計(jì)算,不過(guò)計(jì)算完之后變量仍然是不可變的。N9s28資訊網(wǎng)——每日最新資訊28at.com

mut 與隱藏的另一個(gè)區(qū)別是,當(dāng)再次使用 let 時(shí),實(shí)際上創(chuàng)建了一個(gè)新變量,我們可以改變值的類型,并且復(fù)用這個(gè)名字。例如,假設(shè)程序請(qǐng)求用戶輸入空格字符來(lái)說(shuō)明希望在文本之間顯示多少個(gè)空格,接下來(lái)我們想將輸入存儲(chǔ)成數(shù)字(多少個(gè)空格):N9s28資訊網(wǎng)——每日最新資訊28at.com

let spaces = " ";let spaces = spaces.len();

第一個(gè) spaces 變量是字符串類型,第二個(gè) spaces 變量是數(shù)字類型。隱藏使我們不必使用不同的名字,如 spaces_str 和 spaces_num;相反,我們可以復(fù)用 spaces 這個(gè)更簡(jiǎn)單的名字。然而,如果嘗試使用 mut,將會(huì)得到一個(gè)編譯時(shí)錯(cuò)誤,如下所示:N9s28資訊網(wǎng)——每日最新資訊28at.com

let mut spaces = " ";spaces = spaces.len();

錯(cuò)誤提示如下:N9s28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N9s28資訊網(wǎng)——每日最新資訊28at.com

4.總結(jié)

在本篇文章中, 我們學(xué)到以下知識(shí)點(diǎn):N9s28資訊網(wǎng)——每日最新資訊28at.com

  • Rust變量定義及可變性、不可變性的靈活應(yīng)用。
  • Rust常量的基本作用域和命名規(guī)則。
  • Rust變量的隱藏屬性規(guī)則、原理和應(yīng)用。

本文鏈接:http://www.www897cc.com/showinfo-26-16026-0.htmlRust編程基礎(chǔ)之變量與可變性

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 開(kāi)源推薦! 一款開(kāi)箱即用的電子簽名組

下一篇: Go的異步編程:使用Futures與Promises

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 7月安卓手機(jī)性價(jià)比榜:努比亞+紅魔兩款新機(jī)入榜

    7月登場(chǎng)的新機(jī)有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產(chǎn)品,而且努比亞和紅魔也一貫有著不錯(cuò)的性價(jià)比,所以在本次的性價(jià)比榜單
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過(guò)去了,我們也迎來(lái)了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會(huì)以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個(gè)線程之間通過(guò)某種機(jī)制進(jìn)行協(xié)調(diào)和交互,例如,線程等待和通知機(jī)制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實(shí)現(xiàn)手段有以下幾種方式:Object 類下
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來(lái)源/華爾街科技眼對(duì)于絕大多數(shù)登山愛(ài)好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創(chuàng)作者|程心排版|王喻可2016年7月13日,百度云計(jì)算戰(zhàn)略發(fā)布會(huì)在北京舉行,宣告著百度智能云的正式啟程。彼時(shí)的會(huì)場(chǎng)座無(wú)虛席,甚至排隊(duì)排到了門外,在場(chǎng)的所有人幾乎都
  • 網(wǎng)紅炒股不為了賺錢,那就是耍流氓!

    來(lái)源:首席商業(yè)評(píng)論6月26日高調(diào)宣布入市,網(wǎng)絡(luò)名嘴大v胡錫進(jìn)居然進(jìn)軍了股市。在一次財(cái)經(jīng)媒體峰會(huì)上,幾個(gè)財(cái)經(jīng)圈媒體大佬就“胡錫進(jìn)炒股是否知道認(rèn)真報(bào)道”展開(kāi)討論。有
  • 攜眾多高端產(chǎn)品亮相ChinaJoy,小米帶來(lái)一場(chǎng)科技與人文的視聽(tīng)盛宴

    7月28日,全球數(shù)字娛樂(lè)領(lǐng)域最具知名度與影響力的年度盛會(huì)中國(guó)國(guó)際數(shù)碼互動(dòng)娛樂(lè)展覽會(huì)(簡(jiǎn)稱ChinaJoy)在上海新國(guó)際博覽中心盛大開(kāi)幕。作為全球領(lǐng)先的科
  • 聯(lián)想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯(lián)想此前宣布,將于11月2日19:30召開(kāi)聯(lián)想秋季輕薄新品發(fā)布會(huì),推出聯(lián)想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會(huì)上推出,官方按照慣例直接在發(fā)布會(huì)前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top 主站蜘蛛池模板: 库车县| 深泽县| 静安区| 安西县| 疏附县| 长顺县| 潞西市| 泗水县| 海伦市| 乌鲁木齐市| 罗田县| 平陆县| 吴忠市| 松溪县| 曲松县| 河南省| 深水埗区| 东光县| 连平县| 衡南县| 托克逊县| 吉林省| 开封县| 宜黄县| 尼玛县| 岢岚县| 濮阳县| 六枝特区| 南宁市| 商河县| 乡城县| 河池市| 文登市| 郎溪县| 玉山县| 普格县| 阿鲁科尔沁旗| 樟树市| 页游| 衡阳县| 麟游县|