zoukankan      html  css  js  c++  java
  • 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中叫做宏。

  • 相关阅读:
    May 1 2017 Week 18 Monday
    April 30 2017 Week 18 Sunday
    April 29 2017 Week 17 Saturday
    April 28 2017 Week 17 Friday
    April 27 2017 Week 17 Thursday
    April 26 2017 Week 17 Wednesday
    【2017-07-04】Qt信号与槽深入理解之一:信号与槽的连接方式
    April 25 2017 Week 17 Tuesday
    April 24 2017 Week 17 Monday
    为什么丑陋的UI界面却能创造良好的用户体验?
  • 原文地址:https://www.cnblogs.com/Davirain/p/13097120.html
Copyright © 2011-2022 走看看