【用Rust写CAD】第二章 第四节 变量

devtools/2024/11/13 8:37:18/

文章目录

  • 1、 变量定义
  • 2、 变量命名规则
  • 3、不可变与可变
  • 4、变量隐藏
  • 5、类型推断


1、 变量定义

如果要声明变量,需要使用 let 关键字。每个变量都有一个唯一的名称。 声明变量后,可将其绑定到某个值,也可稍后在程序中绑定该值。 以下代码声明名为 a的变量。

rust">let a;

a变量尚未绑定到某个值,在没有绑定前不能使用,因此补充赋值语句。

rust">a=10;

以上语句可以合并成如下语句。

rust">let a= 10;

2、 变量命名规则

变量都有一个唯一的名称,命名规则如下。

  • 变量名可以由字母、数字、下划线组成;
  • 必须以字母或下划线开头;
  • 大小写字母是不同的,因为 Rust 区分大小写;
  • 变量名不能使用保留字。

3、不可变与可变

在 Rust 中,变量绑定默认不可变。 如果变量不可变,在将值绑定到名称后,将无法更改此值。
例如,如果我们尝试更改前面示例中 a 变量的值,则会收到来自编译器的错误消息。

rust">let a= 10;//定义的是不可变变量
a= 15;//改变这个变量值会报错

若要更改值,必须先使用 mut 关键字将变量绑定设为可变。

rust">let mut b= 10;//可变变量
b= 15;//可以被赋值,语句正确

4、变量隐藏

可以声明与某个现有变量同名的新变量。 新的声明会创建新的绑定。 在 Rust 中,此操作称为“隐藏”,这是由于新变量会隐藏上一个变量。 旧变量仍存在,但无法在此范围内引用它。

以下代码演示隐藏的用法。 声明名为 c 的变量。 我们没有将变量定义为可变变量,因为每个 let 操作都会创建一个名为 c 的新变量,同时隐藏以前的变量绑定。

rust">let c = 1;// 声明名为“c”的第一个变量绑定,该值为1let c = c + 1;  声明第二个变量绑定,隐藏现有变量“c”,该值为2
let c = c * 2; // 声明第三个变量绑定,隐藏变量“c”的第二个绑定,该值为4

5、类型推断

Rust 是强类型语言,上面语句会自动判断变量的类型。下面语句会报错误的:

rust">let mut b= 10;//可变变量,推断为整数变量
b = "abc";//"abc"是字符串,不能赋给整型变量
b= 4.56; //实数不能自动转换为整数,不能赋给整型变量

不能推断类型的,必须明确类型。声明类型可以在变量名后跟冒号(:),并写明类型。

rust">let mut d:u32=10;//变量为u32类型
let mut e:i64;//变量为i64类型

http://www.ppmy.cn/devtools/133302.html

相关文章

top-k类问题

问题描述 从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。 1 直接排序 排序是最容易想到的方法,将n个数排序之后,取出最大的k个,即为所得: sort(arr, 1, n); // 时间复杂度为O(n*lg(n)) …

2025 年使用 Python 和 Go 解决 Cloudflare 问题

作为一名从事网络自动化和爬取工作的开发者,我亲眼目睹了日益复杂的安全性措施带来的挑战。其中一项挑战是 Cloudflare 的 Turnstile CAPTCHA 系统,目前该系统已在全球 2600 多万个网站上使用。这种先进的解决方案重新定义了我们对机器人检测的处理方式&…

javascript里面的blob和worker

目录 Blob 1. Blob的基本概念 2. 创建Blob 3. Blob的属性和方法 示例: 3.1. Blob 的方法 4. 使用Blob 4.1 创建对象URL 4.2 使用FileReader读取Blob 4.3 上传Blob 5. Blob与其他对象的关系 6. 释放Blob对象 7. Blob的应用场景 8. 总结 Web Worker 1.…

7.qsqlquerymodel 与 qtableview使用

目录 qtableview 委托QStyledItemDelegateQAbstractItemDelegateCheckBoxItemDelegate使用qtableview控制列宽,行高,隐藏拖拽行列 qtableview 委托 //设置单元格委托 void setItemDelegate(QAbstractItemDelegate *delegate); QAbstractItemDelegate *it…

【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的学习总结

一、前言 1.学习背景 最近在学习脑网络分析方法时,笔者偶然读到了一篇发表在Physical Review Letters上的文章,文章介绍了一种名为嵌套谱分割(Nested-Spectral Partition, NSP)的方法,用于研究大脑功能网络的分离和整合特性。 传统的脑网络分…

ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解

前言 在现代前端开发中,代码质量与一致性是至关重要的,ESLint 正是为此而生的一款强大工具,本文将带您详细了解 ESLint 的配置文件,并通过通俗易懂的方式讲解其主要配置项及其配置方法。此外,我们还将探讨一些高级配置…

【前端】Svelte:动画效果

在现代前端开发中,动画效果可以大大提升用户体验,使应用更生动、易用。Svelte 提供了灵活的动画 API,让开发者能够快速实现从简单过渡到复杂动画的各种效果。本文将系统性地介绍 Svelte 的动画功能,并通过多个示例演示如何创建动感…

前端开发中常见的ES6技术细节分享一

var、let、const之间有什么区别? var: 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量​ 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是g…