gpt4 book ai didi

javascript - 为什么 Scala 需要 def 语句?

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:12 26 4
gpt4 key购买 nike

我是 scala 的新手,但我有 javascript 的背景。

虽然我看到需要区分 valvar(可变和不可变),但我不明白为什么要使用 def 语句应该永远需要。

如果函数是真正的一等公民,就像在 javascript 中一样,为什么要用 def 而不是用 val 声明它们?

该设计决策是基于 JVM 相关约束,还是存在一些我无法理解的底层逻辑?

最佳答案

函数的一个很大的限制是它们不能作为一个值是泛型的。例如

def foo[A](bar: A): Unit

那不能表示为一个函数值

val foo: A => Unit  // A is _not_ a type parameter

需要类型参数 A 的解析。其他区别是: 方法带有 this 作为封闭类的自然概念;他们可以通过 return 中止。它们可以有多个参数列表,最重要的是一个隐式参数列表。他们有命名和默认参数。 (我试着想象一个带有命名参数和默认参数的函数会是什么样子,也许可以设计它)

可能只有函数值是不可能的,但 def 似乎更适合 Scala 的 OO 方面。

关于javascript - 为什么 Scala 需要 def 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369771/

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