Rust 基础入门 —— 语句与表达式

简介: 语句与表达式这一节,我们接触的是rust中的有一个基本类型 我将其称之为 —— 逻辑结构,这个是我自己命名的,但我觉得很贴切。

语句与表达式

这一节,我们接触的是rust中的有一个基本类型 我将其称之为 —— 逻辑结构,这个是我自己命名的,但我觉得很贴切。

我们只需要记住一个有;结尾的逻辑结构就是语句。 没有的就是表达式。

而我所谓的逻辑结构就是 他包含了变量,操作,可能还要获取结果。的几部分就是逻辑结构。


举例:


fn main() {
    let a = 8;
    let b: Vec<f64> = Vec::new();
    let (a, c) = ("hi", false);
}


以上都是语句, 即 他们都完成了一个具体的操作, 并且没有返回值


而以下内容 则是 表达式:


fn main() {
    let y = {
        let x = 3; //语句
        x + 1 // 表达式
    }; // 语句
    println!("The value of y is: {}", y);
    let z = (let r = 0); // 外层 是语句, 但是右值 是 赋值语句, 因此外层找不到返回值,会报错。
}


总结一下


表达式是要有返回值的,没有分号的。

表达式添加了分号就变成了语句

let 作为赋值语句,可以直接理解为语句。

rust 中是可以通过表达式定义 let声明的左值的,因为实质上这是一个变量绑定,你可以理解为指向函数的指针,但是这个地方会在编译时,将对应函数内容计算出来给左值,(有点像编译时lambda是吧,虽然lambda是运行时的还可以捕获局部参数。但这种写作风格雀氏形似)。

表达式如果没有显示的返回内容如 :let z = {let r = 1;r+=1;r} 或者let z = {let r = 1;r+=1;return r}而是 let z = {let r = 1}那么这是z 实际 赋值单元类型。

即:表达式如果不返回任何值,会隐式地返回一个 ()。

来段更难的代码:

fn main() {
    assert_eq!(ret_unit_type(), ())
}
fn ret_unit_type() {
    let x = 1;
    // if 语句块也是一个表达式,因此可以用于赋值,也可以直接返回
    // 类似三元运算符,在Rust里我们可以这样写
    let y = if x % 2 == 1 {
        "odd"
    } else {
        "even"
    };
    // 或者写成一行
    let z = if x % 2 == 1 { "odd" } else { "even" };
}
目录
相关文章
|
10月前
|
Rust 安全 编译器
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第26天】Rust语言诞生于2006年,由Mozilla公司的Graydon Hoare发起。作为一门系统编程语言,Rust专注于安全和高性能。通过所有权系统和生命周期管理,Rust在编译期就能消除内存泄漏等问题,适用于操作系统、嵌入式系统等高可靠性场景。
530 2
|
10月前
|
Rust 安全 Java
编程语言新宠:Rust语言的特性、优势与实战入门
【10月更文挑战第27天】Rust语言以其独特的特性和优势在编程领域迅速崛起。本文介绍Rust的核心特性,如所有权系统和强大的并发处理能力,以及其性能和安全性优势。通过实战示例,如“Hello, World!”和线程编程,帮助读者快速入门Rust。
916 1
|
10月前
|
Rust 安全 云计算
Rust语言入门:安全性与并发性的完美结合
【10月更文挑战第25天】Rust 是一种系统级编程语言,以其独特的安全性和并发性保障而著称。它提供了与 C 和 C++ 相当的性能,同时确保内存安全,避免了常见的安全问题。Rust 的所有权系统通过编译时检查保证内存安全,其零成本抽象设计使得抽象不会带来额外的性能开销。Rust 还提供了强大的并发编程工具,如线程、消息传递和原子操作,确保了数据竞争的编译时检测。这些特性使 Rust 成为编写高效、安全并发代码的理想选择。
226 0
|
Rust Linux iOS开发
【Rust学习】01_入门准备
让我们开始您的 Rust 之旅吧!有很多东西要学,但每一段旅程都是从第一步开始的,在本章中,我们将一起来学习以下知识点: - 在 Linux、macOS 和 Windows 上安装 Rust - 编写打印程序 Hello, world! - 使用 cargo Rust 的包管理器和构建系统
190 1
|
Web App开发 Rust 安全
一名C++程序员的Rust入门初体验
作者最近尝试写了一些Rust代码,本文主要讲述了对Rust的看法和Rust与C++的一些区别。
|
Rust 程序员
Rust条件语句:if-else表达式详解
Rust条件语句:if-else表达式详解
119 0
|
Rust 开发者
Rust函数入门与函数重载
Rust函数入门与函数重载
253 0
|
Rust 算法 开发者
【Rust 控制流入门指南】 Introduction to Control Flow in Rust
【Rust 控制流入门指南】 Introduction to Control Flow in Rust
103 0
|
Rust 安全 编译器
Rust 基础入门 —— 2.3.所有权和借用 (二)
同一时刻,你只能拥有要么一个可变引用, 要么任意多个不可变引用 引用必须总是有效的 贴一个体验不错的学习链接恰饭:学习链接
150 0
|
Rust 安全 算法
Rust 基础入门 ——所有权 引言 :垃圾自动回收机制的缺陷。
能有这些问题的部分发生场景: 游戏开发:在游戏开发中,需要保持稳定的帧率和低延迟,以提供流畅的游戏体验。如果GC频繁触发或停顿时间过长,会导致游戏卡顿或掉帧,影响游戏的流畅度和响应性能。
284 0