首页 > 其他分享 >03_变量与值可变性

03_变量与值可变性

时间:2023-10-11 15:23:32浏览次数:36  
标签:03 常量 mut 作用域 与值 let 可变性 声明 变量

rust定义变量

  • let关键字
    用于声明变量:let (mut) 变量名

  • 变量值是否改变
    默认变量值不可变(Immutable),在声明变量时加上mut才为可变变量。

let x = 5;
x = 6;
let mut y = 6;
y = 8;
let mut y: u32 = 9;

第二行编译报错,上边变量声明时未标注类型的,默认是i32类型。

rust定义常量

常量(constant),常量在绑定值以后一直不再可变。使用const声明。
程序运行期间,常量在声明作用域内一直有效。

常量与不可变变量的区别

常量不可用mut,且永远不可变
常量声明使用const,且类型必须被标注
常量可在任何作用域内声明,包括全局作用域
常量声明时只可赋值(绑定)为常量表达式,等号右侧不能是函数调用,也不能是运行时才能计算出的值

常量命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开。
如:

const MAX_NUM: u32 = 100_000;

Shadowing(隐藏)

可用相同名字声明新的变量,新的变量会shadow(隐藏)之前声明的同名变量。
如:()

let x = 5;
let x = x + 1;
let y = x;
let x = "9";

前后x是两个变量,第二行的x隐藏了第一行的x变量,第三行的x是第二行的x=6。

shadow和mut的区别

若不用let,重新给非mut变量赋值报错
使用let声明同名变量,也是不可变的
使用let声明同名新变量,类型可与上一个不同

let s = "test"; // s是str类型
let s = s.len(); // s为usize类型了

let mut t = "test";
t = t.len(); // 编译报错

标签:03,常量,mut,作用域,与值,let,可变性,声明,变量
From: https://www.cnblogs.com/UFO-blogs/p/17757269.html

相关文章

  • zynq7z030 coremark 跑分
    zynq>./coremarko02Kperformancerunparametersforcoremark.CoreMarkSize:666Totalticks:214430000Totaltime(secs):214.430000Iterations/Sec:466.352656Iterations:100000Compilerversion:GCC4.6.1Compilerflags:-o0Memorylo......
  • TypeError: 'dict' object is not callable 错误
     做实例的时候报错TypeError:'dict'objectisnotcallable感觉应该是因为我将实例都放在了一个程序中,在4.py上面有太多book了,在上面已经调用了所以我放进另一个程序就可以实现了 ......
  • ABAP:生产订单CO01/CO02/CO03保存前增强
    T-Code:SMOD-PPCO0007*&---------------------------------------------------------------------**&包含ZXCO1U06*&---------------------------------------------------------------------**[MOD-01]18.09.202117:51:22ysx检查工单所有工......
  • npm install -g yarn 安装yarn之后提示:'yarn' 不是内部或外部命令,也不是可运行的程序
    操作系统:win10node版本:v14.21.31:npminstall-gyarn 2:yarn 报错:'yarn'不是内部或外部命令,也不是可运行的程序或批处理文件。3:yarn 安装在C:\ProgramFiles\nodejs\node_modules\corepack\shims4:设置PATHsetPATH=%PATH%;C:\ProgramFiles\nodejs\node_modules\core......
  • Perkins 1106D Generation CID 0003 FMI 05 Trouble Code Solution
     ThisillustrationgivethesolutionforPerkins1106Delectricpowergeneration(EPG)CID0003FMI05troublecode.RelatedContents:PerkinsESTCompactAdapterPerkinsEST2023A&2022A&2019ASoftwareFreeDownloadPerkins1106DElectricPower......
  • 2023_10_11_MYSQL_DAY_03_笔记_上
    2023_10_11_MYSQL_DAY_03_笔记_上10章作业题01答案INSERTINTOclass(classid,cname)VALUES(1,'Java1班');INSERTINTOclass(cname,classid)VALUES('Java2班',2);INSERTINTOclassVALUES(3,'Java3班',NULL);10章作业题020304答案INSERTINTOstud......
  • P7782 「MCOI-Zero / AC6-M03」 Sipli Field
    P7782「MCOI-Zero/AC6-M03」SipliField更好的阅读体验单log淀粉做法。回想正常淀粉计算的是树上的路径问题,但题目中要求计算经过每个点的答案,这样我们选取重心后一棵子树对另一棵子树的答案就会少算,所以我们淀粉时不仅要算根的答案,也要考虑子树间的相互贡献。首先以根......
  • 03-Shell环境变量深入
    1.自定义系统环境变量1.1全局配置文件/etc/profile应用场景当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供给所有Shell程序使用以后只要是所有Shell程序或命令使用的变量,就可以定义在这个文件中1.2案例/etc/profile定义存储自定义......
  • SQLAlchemy学习-13.分页查询'Query' object has no attribute 'paginate'
    前言用过Flask-SQLAlchemy的应该知道,它提供了一个分页查询方法paginate(),方便我们实现在后端查询分页。但是单独使用SQLAlchemy却没有paginate方法,会报错:AttributeError:'Query'objecthasnoattribute'paginate'SQLAlchemy没有paginate方法Flask-SQLAlchemy分页查询参......
  • cpsc 103 python基本前提
    python基本知识基本运算符1.(**)是次方ex:2**3evaluatesto(2tothepowerof3)82.(%)是求余数ex:15%4evaluatestobecausetheremainderwhendividing15by4is33基本运算规则1.str乘以数字ex:'hello'*2evalutesto'hellohello'2.[a......