gpt4 book ai didi

scala - 为什么 String 不是一个值?

转载 作者:行者123 更新时间:2023-12-04 20:15:02 26 4
gpt4 key购买 nike

scala> val a = Int
a: Int.type = object scala.Int

scala> val a = String
<console>:11: error: object java.lang.String is not a value
val a = String
^

为什么 scala 不在 java.lang.String 周围创建一个薄包装器以使 String 成为一个值?当主要类型之一 (String) 不能在表达式中使用或传递给函数/从函数返回时,这不是非常严格吗?

最佳答案

嗯...在 Scala 中, 可以有伴生对象。

任何 class A 的伴生对象实际上是 A.type 的一个实例。

所以……当你这样做的时候,

val i = Int

你得到的是 class Intcompanion object,它是 Int.type 的一个实例

请记住 Int 仍然不是一个值...您拥有的这个东西不是 Int。它也不是 Int 的实例。它是 Int.type 的实例。

但就 String 而言......它被定义为来自 Java 世界的相应 java.lang.String 的别名,因此没有这样的别名伴随对象。因此 val 赋值不适用于它。

至于为什么String在Scala中没有被包裹。这可能有很多原因。但一个主要原因是因为没有必要。

Scala 希望拥有 对象层次结构,这样一切都是对象并继承自相同的根 Any。 Java 有一些基本类型,例如 intlong 等...它们不是对象...这就需要将它们包装成 Int

关于scala - 为什么 String 不是一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41410325/

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