gpt4 book ai didi

scala - scala REPL 内的静态导入

转载 作者:行者123 更新时间:2023-12-01 08:20:13 25 4
gpt4 key购买 nike

给定以下对象:

scala> object P2pClient {
| type Num = Double
| type Weights = Array[Array[Num]]
| }
defined object P2pClient

以及以下导入:

import P2pClient._

权重类型似乎可以正确理解:

val w: Weights = new Weights(3)
w: P2pClient.Weights = Array(null, null, null)

但是为什么它不能在以下构造中工作:

case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
| override def value() = W
| }
<console>:12: error: not found: type Weights
case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
^
<console>:12: error: not found: type Weights
case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
^

对这里发生的事情有什么想法(/解决方法)吗?

更新 REPL 中的通配符导入似乎存在重大限制。这是另一个更简单的说明:

scala> import reflect.runtime.universe._
import reflect.runtime.universe._

scala> trait TT { def x[T <: java.io.Serializable : TypeTag]: T }
<console>:10: error: not found: type TypeTag
trait TT { def x[T <: java.io.Serializable : TypeTag]: T }
^

所以我们看到通配符导入不起作用。这是带有显式包的相同代码:

scala> trait TT {  def x[T <: java.io.Serializable : reflect.runtime.universe.TypeTag]: T }
defined trait TT

最佳答案

我发现该问题是由于我使用 Spark REPL spark-shell 造成的。在正常的 Scala REPL 中不会发生该问题。

关于scala - scala REPL 内的静态导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219313/

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