gpt4 book ai didi

scala - 为什么在 Scala 中使用 def 和 val,反之亦然

转载 作者:行者123 更新时间:2023-12-03 23:23:27 25 4
gpt4 key购买 nike

我知道这之前已经在其他帖子中讨论过,我了解使用 def 之间的基本区别。和 val . def用于定义方法和 val为一个不可变的引用。通过提出这个问题,我试图完成的是了解 def 是否还有其他内容。 .它可以与 val 互换使用吗? ?

最近我尝试了以下代码,如果我目前对 def 的理解无法说服自己足够了:

scala> def i: Int = 3
i: Int

scala> i
res2: Int = 3

所以我很好奇,这是否相当于 val i = 3 ?

然后我尝试了这个:
scala> i()
<console>:9: error: Int does not take parameters
i()

我这样做只是为了测试我对 def 语义的理解.现在我想知道,什么时候 i是一种方法,为什么 Scala 会提示“...不带参数”?

接下来我尝试了以下操作:
scala> def i(): Int = 3
i: ()Int

scala> i()
res4: Int = 3

这一次Scala似乎同意了 i是一种方法。那么我可以使用 def吗?代替 val可以互换声明和初始化变量吗?

最佳答案

两个都

def i = 3


def i() = 3

声明方法。唯一的区别是,第一个是没有参数列表的方法,第二个是带有空参数列表的方法。前者通常用于没有副作用的方法,后者用于有副作用的方法。
如果值永远不会改变并且您想避免重新计算它,您应该使用 val 而不是 def。每次调用 def 都会重新计算,而 val 只分配一次值。

关于scala - 为什么在 Scala 中使用 def 和 val,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787670/

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