Rust的語句與表達式


Rust 語句與表達式

Rust 中的語法分為兩大類: 語句 (statement) 和表達式 (Expression)。

語句:指的是要執行的一些操作和產生副作用的表達式。

表達式:主要用於計算求值。

  • 語句

    • 聲明語句:用於聲明各種語言項,包括變量、靜態變量、常量、結構體、函數等,以及通過extern和use關鍵字引入包和模塊。

    • 表達式語句:特指以分號結尾的表達式。此類表達式求值結果將會被舍棄,並總是返回單元類型()。單元類型擁有唯一的值,就是它本身。單元類型的概念來自OCmal,他表示“沒什么特殊的價值”。將單元值作為函數返回值。就表示該函數無返回值,通常,無返回值的函數不需要在函數簽名中指定返回類型。

 

//extern crate std;// 聲明語句
//use std::prelude::v1::*;//上同
//注釋掉,是因為Rust會為每個crate都自動引入標准庫模塊,除非使用#[no_std]屬性明確指定了不需要標准庫。
fn main(){
 pub fn answer() -> (){
   let a = 40;
   let b = 2;
   assert_eq!(sum(a, b), 42);
}
 pub fn sum(a: i32, b:i32) -> i32{
   a + b
}
 answer();
}

 

從這個角度來看,可以將Rust看作一切皆表達式。由於當分號后面什么都沒有時自動補單元值()的特點,可以將Rust中的語句看作計算結果均為()的特殊表達式。而對於普通的表達式來說,則會得到正常的求值結果。

當遇到函數的時候,會將函數體的花括號識別為塊表達式。塊表達式是由一對花括號和一系列表達式組成的,它總是返回塊中最后一個表達式的值。

Rust編譯器在解析代碼的時候,如果碰到分毫,就會繼續往后面執行;如果碰斷語句,則執行語句;如果碰到表達式,則會對表達式求值,如果分號后面什么都沒有,就會補上單元值()。

Assert_eq!是宏語句,是Rust提供的斷言,允許判斷給定的兩個表達式求值結果是否相同。像這種名字以嘆號結尾,並且可以像函數一樣被調用的語句,在Rust中叫做宏。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM