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

Rust 基礎(chǔ)語法

這篇具有很好參考價值的文章主要介紹了Rust 基礎(chǔ)語法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Rust 基礎(chǔ)語法

變量,基本類型,函數(shù),注釋和控制流,這些幾乎是每種編程語言都具有的編程概念。

這些基礎(chǔ)概念將存在于每個 Rust 程序中,及早學(xué)習(xí)它們將使你以最快的速度學(xué)習(xí) Rust 的使用。

變量

首先必須說明,Rust 是強(qiáng)類型語言,但具有自動判斷變量類型的能力。這很容易讓人與弱類型語言產(chǎn)生混淆。

如果要聲明變量,需要使用 let 關(guān)鍵字。例如:

let a = 123;

只學(xué)習(xí)過 JavaScript 的開發(fā)者對這句話很敏感,只學(xué)習(xí)過 C 語言的開發(fā)者對這句話很不理解。

在這句聲明語句之后,以下三行代碼都是被禁止的:

a = "abc";
a = 4.56; 
a = 456;

第一行的錯誤在于當(dāng)聲明 a 是 123 以后,a 就被確定為整型數(shù)字,不能把字符串類型的值賦給它。

第二行的錯誤在于自動轉(zhuǎn)換數(shù)字精度有損失,Rust 語言不允許精度有損失的自動數(shù)據(jù)類型轉(zhuǎn)換。

第三行的錯誤在于 a 不是個可變變量。

前兩種錯誤很容易理解,但第三個是什么意思?難道 a 不是個變量嗎?

這就牽扯到了 Rust 語言為了高并發(fā)安全而做的設(shè)計:在語言層面盡量少的讓變量的值可以改變。所以 a 的值不可變。但這不意味著 a 不是"變量"(英文中的 variable),官方文檔稱 a 這種變量為"不可變變量"。

如果我們編寫的程序的一部分在假設(shè)值永遠(yuǎn)不會改變的情況下運(yùn)行,而我們代碼的另一部分在改變該值,那么代碼的第一部分可能就不會按照設(shè)計的意圖去運(yùn)轉(zhuǎn)。由于這種原因造成的錯誤很難在事后找到。這是 Rust 語言設(shè)計這種機(jī)制的原因。

當(dāng)然,使變量變得"可變"(mutable)只需一個 mut 關(guān)鍵字。

let mut a = 123;
a = 456;

這個程序是正確的。

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

既然不可變變量是不可變的,那不就是常量嗎?為什么叫變量?

變量和常量還是有區(qū)別的。在 Rust 中,以下程序是合法的:

let a = 123;   // 可以編譯,但可能有警告,因?yàn)樵撟兞繘]有被使用
let a = 456;

但是如果 a 是常量就不合法:

const a: i32 = 123;
let a = 456;

變量的值可以"重新綁定",但在"重新綁定"以前不能私自被改變,這樣可以確保在每一次"綁定"之后的區(qū)域里編譯器可以充分的推理程序邏輯。 雖然 Rust 有自動判斷類型的功能,但有些情況下聲明類型更加方便:

let a: u64 = 123;

這里聲明了 a 為無符號 64 位整型變量,如果沒有聲明類型,a 將自動被判斷為有符號 32 位整型變量,這對于 a 的取值范圍有很大的影響。

重影(Shadowing)

重影的概念與其他面向?qū)ο笳Z言里的"重寫"(Override)或"重載"(Overload)是不一樣的。重影就是剛才講述的所謂"重新綁定",之所以加引號就是為了在沒有介紹這個概念的時候代替一下概念。

重影就是指變量的名稱可以被重新使用的機(jī)制:

實(shí)例

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

這段程序的運(yùn)行結(jié)果:

The value of x is: 12

重影與可變變量的賦值不是一個概念,重影是指用同一個名字重新代表另一個變量實(shí)體,其類型、可變屬性和值都可以變化。但可變變量賦值僅能發(fā)生值的變化。

let mut s = "123";
s = s.len();

這段程序會出錯:不能給字符串變量賦整型值。

總結(jié)

  1. rust 作為強(qiáng)類型語言,但是也有自動判斷類型的能力,所以它的使用有點(diǎn)類似于c++的size_t 或者 auto 。我們使用的關(guān)鍵字是 let。 可以簡單記錄為 let 走天下。創(chuàng)建變量? let。更新變量 ? let

  2. 由此引出第二點(diǎn),不再是傳統(tǒng)的一次創(chuàng)建,任意更改。

    1. rust中,由于為高并發(fā)而做的努力,它不再允許隨意更改。
    2. 你可以想象在以往高并發(fā)中死鎖和數(shù)據(jù)污染導(dǎo)致的令人頭大的后果和補(bǔ)救措施,以及我們?yōu)榇俗龀龅木薮笸讌f(xié)和投入了大量的成本。
    3. 現(xiàn)在,我們將他限制住了。
  3. 每次修改變量時,有兩種方式:

    1. 使用let關(guān)鍵字每次修改,重新聲明。(既是重影)
      1. 這樣使用時,編譯會告警。
    2. 添加mut 關(guān)鍵字 (mutable)
      let mut zry = 123;
      zry = 432;
      //但是類型修改時還是不行,這是原則問題>_<
      zry = 'zry';
      zry = 123.1;
      
  4. 后置的類型強(qiáng)聲明

    1. 在rust 中,類型的聲明是可以顯式限制的,畢竟是強(qiáng)類型嘛。
    2. 在顯式聲明時, 語法為 變量后 :類型如:
      let z: i32 = 123;
      let r: u64 = 234;
      
    3. 其意義在于當(dāng)我們想以更大的空間容納數(shù)據(jù)但我又不想使用新的空間時,或者想要預(yù)留更大的空間時方便
  5. 重影

    1. 在學(xué)習(xí)Rust 的過程中,你會發(fā)現(xiàn)一些很酷的內(nèi)容,我們在重定義變量這個操作時,不會直白的說,我在這里重定義了,而是說 重影。這個蠻中二的詞雀氏讓我有種高大冷峻的范。
    2. 那么實(shí)際重影做的是什么呢?我們之前說了Rust 并發(fā)安全,所以限制隨意修改變量值。但我們有兩種方式實(shí)現(xiàn)修改。第一種就是重影。
    3. 代碼實(shí)現(xiàn):
      let z = 1;
      let z = z+1;
      let z = z*2;
      let z = z*z;
      printin!("z is {}",z)

    Rust 基礎(chǔ)語法

  6. mut 改變的只能是同類型值Rust 基礎(chǔ)語法文章來源地址http://www.zghlxwxcb.cn/news/detail-492832.html

到了這里,關(guān)于Rust 基礎(chǔ)語法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包