将特征导入工作表时出错

时间:2016-10-17 01:06:54

标签: scala

我在包中的单独文件中有以下对象和特征定义

object Bloxorz extends App   // in Bloxorz.scala
trait Solver extends GameDef   // in Solver.scala
trait GameDef                  // in GameDef.scala

trait GameDef我希望测试一种方法。所以我在我的包的根目录中创建了一个工作表并尝试导入它。

import streams.GameDef._

但我收到以下错误

object GameDef is not a member of package streams. Note: trait GameDef exists, but it has no companion object

由于Solver扩展GameDef,我认为我需要导入Solver,但这会产生相同的错误。只导入Bloxorz对象没有抛出错误,但是没有公开GameDef所需的方法。

2 个答案:

答案 0 :(得分:1)

试试这个:

import streams.GameDef

上面的代码导入了名为GameDef的包的所有类。我猜 G ameDef是一个类,对象或特征,因为它是大写的。事实上,您所获得的错误很好地描述了您的问题:

对象GameDef不是包流的成员。注意:特质GameDef 存在,但它没有伴侣对象

答案 1 :(得分:0)

我根据您的说法和我的假设创建了代码段。我以为你只想测试Pos,而不是GameDef。

GameDef.scala:

package test

trait GameDef {
    case class Pos(x: Int, y: Int) {
         // Pos will play with x and y here.
    }
}

YourWorksheet.sc:

package test

object TestPosInsideGameDef extends GameDef {
    def newPos(x: Int, y: Int): Pos = new Pos(x, y)

    val pos = newPos(1, 2)
}