欢迎大家来到IT世界,在知识的湖畔探索吧!
基本编程概念:Rust变量和基本数据类型。
大家好,接下来将学习Rust的基本编程概念。将学习的主要内容包括Rust的变量和基本数据类型、Rust函数、Rust的控制流等。
下面在Rust projects目录中创建一个名为A variables的新项目,使用命令cargo new variables。这个variables表示项目名,执行命令以后会直接自动创建various子目录以及相关的一些文件。
进入various子目录,打开系统为自动创建的source子目录下面的men dot is文件,将内容替换成这样的内容,保存该文件运行cargo run来运行该程序。终端上将显示这样的信息:the value of x is one。
说明一下该程序,在roster中letter语句是声明或者创建变量的语句,let x等于一表明了生命的一个名为x的变量,并且将该变量与值一进行绑定,也就是将该变量初始化为值一或者将值一付给变量x,这是letter语句。
之后有一个print lie感叹号这样一条语句,这条语句将变量x的值打印在终端上,其中空的大括号是一个站位符,打印的时候将被替换成后面变量x的值,所以最后打印结果是the value of x is 1。
在上面的示例中变量x的生命与初始化是在一条语句中完成的,也就是这条语句let x等于一,生命了一条变量x,并且对它进行初始化,将它初始化复制为一。也可以将这种变量声明和初始化分成两条语句,分别声明变量,然后再对其进行初始化。
来看这个例子,首先这里声明一个变量x,然后将x复为值一,最后打印调用print lie rest的宏,打印x的值是一。使用coco run运行程序结果跟上面这个例子是完全相同的。
如果声明了变量,但是没有对变量初始化,就使用该变量会出现什么情况?来修改一下上面的例子,这里还是声明变量x,但是没有对x进行复制操作,也就是没有对变量x进行初始化。
编译程序会出现这样的错误,type and type annotations needed就是这个类型注释,需要类型注释。这里因为没有对x进行初始化,所以编译程序甚至都不知道所生命的变量x的类型。
这表明Rust编译程序要求每个变量在使用之前必须显示的对其进行初始化及进行初始化的赋值,这与其他一些编程语言如javascript和goal等不同,这些编程语言会自动地为变量。
·再来看下面的程序,这里还是生命率变量x,然后它的值等于一,初始化对它进行负值为一,然后使用print print light感叹号就是print light这个红,然后打印出这样一个信息,表明x的值是一,这个地方大括号是一个空大括号是一,站位符实际执行的时候会替换为x的值,这个刚才介绍过。
·增加两行语句,这里又将x变成二,刚才是x等于一行先变成二,然后再打印出x的值。
·编译该程序的系统提示如下错误信息:cannot assign twice to immutable variable x,不能对不可变的变量x两次复制,是这样一条信息。
·出现错误的原因在于在Rust程序中缺省情况下变量值是不可变的,也就是说缺省情况下对变量只能复制一次,一旦对变量复制之后该变量的值将保持不变,这也是Rust为保证程序安全而采取的具体措施之一。
·回到程序,变量x是不变的,缺省情况它是不变的,所以语句xr将变量x的值由一变成二,而Rust变异器不允许这样做,所以该程序不能通过Rust变异。
·回来看下这个程序,这里声明一个变了x,确认情况下它的值是不变的,也就是它只能被复制一次,所以这里地方被复制以后再变复制是会出现错误的。
·ross之所以这样做是为了保证程序安全而采取这样的措施,如果希望变量x值可变,必须使用关键字mute表示该变量的值是可变的,也就是mutable。
·修改之前的程序,首先还是声明变量x,然后的数字化对着进行负一,但是前面加了x变量x,在前面加了m u t这样的一个关键字,表示x这个值是在整个程序的运行过程中它的值是可以变化的。
·大家看一下这里后面其他程序没有变化,只要加这个关键字,这里还是x重新复制,把它值变成二,打印出这x的值。
·编辑该程序以后可以看到程序能够通过Rust编辑器的编译,运营结果跟预期的是一致的,打印出两个时间点的x的值。
简单的总结:
·语句let x 声明一个变量,x值不可变,也就是没有加mute的情况下x不可变,即一旦给x复制之后x值保持不变,也就是说只能对x进行一次复制,不能对x多次复制。
这是let x 语句let mute x 声明一个变成x,x值在整个程序的运行过程中是可变的,也就是说可以为x多次复制。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/99710.html