![](/img/trans.png)
[英]Why don't we have to declare static functions the same way we need to declare static variables in c++?
[英]Why do we need constants in Rust if we have immutable variables?
所以我正在探索 Rust,并且我已经阅读了常量和不可变变量之间的技术差异。 但似乎不可变变量可以做常量可以做的所有事情。 那么,如果不可变变量可以完全替代它们,那么常量的存在意义何在?
您应该考虑两个计算时间:
该常量在编译时计算(并且可以在其他编译时计算中使用),因此运行时间更快,因为它确实需要再次计算。
不可变变量总是在运行时计算(从通常在计算时不可用的外部输入),并且在那里不能使用常量。
那么,如果不可变变量可以完全替代它们,那么常量的存在意义何在?
虽然在某些用例中常量可以与不可变变量互换,但值类别之间的主要区别在于它们的语义。
立即声明一个常量对读者说明了很多关于该值的含义:特别是,包含该值的信息必须在编译时都可用。 这是由编译器强制执行的属性。 这为读者设定了关于价值是什么以及可以用它做什么的期望。
当然,不可变变量的初始化要灵活得多。 没有强制要求这些值在编译时是已知的,产生这些值的计算可能非常复杂,甚至随着时间的推移而演变。
差异可能主要在于风格(在许多但不是所有用例中),但在涉及可读性和可维护性的情况下,这种区别是有价值的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.