Rust的语句和表达式
Rust是一门基于表达式的语言,在其他编程语言中经常听到类似赋值语句、lambda表达式的说法,却从来没有在意过所谓的语句和表达式有什么区别,而在实际的使用中,它们好像确实没啥区别,但是在Rust中,语句和表达式就被严格区分开来了,《Rust 程序设计语言》中提到Rust 的函数体是由一系列语句和一个可选的结尾表达式来构成。在Rust的函数中一般会省略return关键字,默认返回最后一个表达式的值,除非需要提前返回。
Rust中语句(Statments)是执行一些操作但不返回值的指令,比如一个创建变量并绑定值的语句:let x = 6;
,而表达式(Expressions)则计算并返回一个值,比如5 + 6
,它计算并返回一个值11。
表达式可以是语句的一部分,例如我们把上面的5 + 6
绑定给一个变量x,let x = 5 + 6;
。一个代码块也是一个表达式,像这样:
花括号中的代码返回了x+1的值7,注意x+1的后面没有分号,一旦加上了分号,它就成了一个表达式语句,这段代码块的返回值就被隐式的设置为单元类型()
。
在ide中的代码提示中可以很清晰的看到,没加分号前 y的类型是i32,加了分号后类型就成了()
。
函数的花括号中的代码也可以被理解成一个代码块,最后的表达式可以充当函数的返回值,如果没有返回值,则会隐性返回一个()
,因为在rust中存在一种永远不返回值的函数,需要用!
来作为返回类型。
显式的将没有返回值的函数的返回值写成()
,也是没有问题的,所以函数的调用也是一个表达式,哪怕有些函数它看上去好像没有返回值,函数的声明是一个语句,叫做声明式语句。
总结一下:
在Rust中语句不能返回值并以分号结尾,表达式总是返回值并且不能加分号,表达式可以作为函数的返回值,而语句不能。
溜了溜了。。
__EOF__

本文链接:https://www.cnblogs.com/ransang/p/17724886.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!