gpt4 book ai didi

scala - 像 3600 * 24 这样的表达式是否在编译时求值?

转载 作者:行者123 更新时间:2023-12-05 09:05:18 28 4
gpt4 key购买 nike

在 Scala 中,假设我写

val oneDay = 3600L * 24 // seconds in one day
val twoDay = oneDay * 2 // seconds in two days

oneDay 的最终值(即 86400)是在运行时还是编译时计算的?

twoDay 的最终值如何?

最佳答案

为了确定最终值,我尝试使用以下方法编译您的代码:

scalac main.scala -Xprint:all

并且,在最后一个阶段,您的代码变为:

final <synthetic> def delayedEndpoint$Main$1: Unit = {
Main.this.oneDay = 86400L;
Main.this.twoDay = Main.this.oneDay().*(2);
()
};

因此,第一个值是在编译时计算的,而第二个值将在运行时计算。

在 Scala 3.0 中,可以使用 inline(或 @ghik 所述的 final)来生成在编译时计算的第二个值。

关于scala - 像 3600 * 24 这样的表达式是否在编译时求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67413384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com