gpt4 book ai didi

scala - list 与类 list 。这个 Scala 错误是什么意思?

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

这个错误是什么意思?

scala> val a = Array[{ def x: Int }](new { def x = 3 }) 
<console>:5: error: type mismatch;
found : scala.reflect.Manifest[java.lang.Object]
required: scala.reflect.ClassManifest[AnyRef{def x: Int}]
val a = Array[{ def x: Int }](new { def x = 3 })
^

我不知道...

最佳答案

好吧,让我们考虑几件事。第一:

type T = { def x: Int }

此类型称为结构类型。它定义的不是一个类,而是一组共享具有特定类型签名的方法的对象。在运行时,它被删除为 Object,并且对 x 的任何调用都是通过反射完成的,因为 Java 没有任何与它等效的东西。

下一个:

val a = Array[{ def x: Int }](new { def x = 3 }) 

请注意,您没有使用new Array,而是使用Array。这是对 Scala 的 Array 对象的 apply 方法的调用。此方法需要一个 ClassManifest 隐式参数来告诉 Scala 如何创建数组。这是必要的,因为 Java 中的数组不会被删除,因此 Scala 必须向 Java 提供精确的类型。

问题是:Java 中没有这样的类型。

我确实想知道 Scala 是否不可能在这里使用 Object 。票可能是有序的,但不要指望它是可能的。

关于scala - list 与类 list 。这个 Scala 错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4991215/

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