繁体   English   中英

如果我们有不可变变量,为什么我们需要 Rust 中的常量?

[英]Why do we need constants in Rust if we have immutable variables?

所以我正在探索 Rust,并且我已经阅读了常量和不可变变量之间的技术差异。 但似乎不可变变量可以做常量可以做的所有事情。 那么,如果不可变变量可以完全替代它们,那么常量的存在意义何在?

您应该考虑两个计算时间:

  • 编译时间
  • 运行

该常量在编译时计算(并且可以在其他编译时计算中使用),因此运行时间更快,因为它确实需要再次计算。

不可变变量总是在运行时计算(从通常在计算时不可用的外部输入),并且在那里不能使用常量。

那么,如果不可变变量可以完全替代它们,那么常量的存在意义何在?

虽然在某些用例中常量可以与不可变变量互换,但值类别之间的主要区别在于它们的语义。

  • 立即声明一个常量对读者说明了很多关于该值的含义:特别是,包含该值的信息必须在编译时都可用。 这是由编译器强制执行的属性。 这为读者设定了关于价值是什么以及可以用它做什么的期望。

  • 当然,不可变变量的初始化要灵活得多。 没有强制要求这些值在编译时是已知的,产生这些值的计算可能非常复杂,甚至随着时间的推移而演变。

差异可能主要在于风格(在许多但不是所有用例中),但在涉及可读性和可维护性的情况下,这种区别是有价值的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM