rust - Rust 函数中的显式“return”关键字
问题描述
我刚开始学习 Rust,我在文档中看到要从函数返回一个值,表达式只是自己放在函数的末尾,没有像这样的分号:
fn times_2(x: i32) -> i32 {
x * 2
}
我知道另一种方法是return
在行首显式编写,但尽管在文档中的任何示例中都没有这样做,但对我来说似乎更清晰、更易读。
在不需要时显式编写是一种不好的做法return
,还是无关紧要?
解决方案
虽然在这种情况下当然可以编写return x * 2;
并且它在功能上是等效的,但它在 Rust 中并不是惯用的。不同的语言对此有不同的最佳实践:在 Perl 中,许多人更喜欢显式和 write return
,而在 Ruby 和 Rust 中,通常更喜欢省略它。
请注意,其他上下文也使用最后一个值作为块的值:闭包、if-else 块、匹配块和其他各种。 return
在大多数情况下无效或不等效,因此您需要习惯在其他地方看到这种语法。
省略它的最佳理由可能是cargo clippy
警告它,这是一种常用的代码检查工具。即使你不喜欢这个工具,其他使用 Rust 代码的人也会在他们的编辑器中默认启用它,如果你忽略它,他们会看到所有的样式警告。除非您有令人信服的理由不这样做(例如向后兼容旧的 Rust 版本),否则最好不要让您的代码出现剪裁警告。
推荐阅读
- angular - 如何通过 PIPE 中的正则表达式以 4 角分割字符串?
- graphql - 在 GraphQLError 上重试获取
- c# - 如何将子对象反序列化为父对象列表(例如,列表
) 基于 xml 节点的值? - java - 在 struts.xml 中使用外部属性
- android - 如何在 React Native webivew for Android 中查看本地 HTML 文件?
- mongodb - golang mongodb 组聚合返回虚拟记录
- angular - 如何为同一图表中的不同绘图设置不同的颜色?
- jquery - 如何删除具有计数器的类名
- spring-integration - 使用 Spring Integration Flow 的多个过滤器表达式
- python - 转换 s3 视频文件分辨率并将其存储回 s3