主要观点:Rust 语言中表达式的重要性常被低估,拥抱表达式能让代码更自然,“一切皆表达式”是有用的思维模型,表达式对语言的易用性影响深远。
关键信息:
- 表达式与语句的区别:表达式产生值,语句不产生值,Rust 中多数东西是表达式,如字面量、变量、函数调用等,Go 中
if
是语句不是表达式,而 Rust 中if
是表达式,可用于三元表达式等。 - Rust 与其他语言的表达式对比:Rust 从 ML 家族语言继承了表达式,在 Go、C++、Java、TypeScript 中不常见,Rust 的表达式结合模式匹配更强大,如
match
也是表达式。 - 表达式的一些特性:
break
是表达式可从循环返回值,dbg!()
返回内部表达式的值。 - 实际应用中的表达式重构:通过去除不必要的
unwrap
、mut
和显式返回语句等操作,可改善代码,如对Config
结构体的配置文件路径处理代码的重构,但要注意不要过度使用表达式以免影响可读性。
重要细节: - 在处理复杂控制流时,可结合
match
和if
表达式,如根据年份返回鸭子颜色的代码。 - 去除
unwrap
时可通过ok_or_else
等方式处理可能的错误,去除mut
可使代码更清晰,去除显式返回语句可利用块中最后表达式隐式返回的特性。 - 要注意在使用表达式时保持代码的可读性,避免过度使用组合器而影响代码的可理解性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。