scala 在包中定义类型

scala define type in a package

这个问题已经有人问过了,但我还需要澄清一下。我想在包中定义一个类型,然后在包的类中使用它。

这是我写的:

/**
  * Created by donbeo on 28/12/15.
  */
package tiktaktoe

package object tiktaktoe {

  type Pos = (Int, Int)

}

class Board {

  val board = List.fill(3, 3)(0)

  def isValidPosition(pos:Pos):Boolean = true 

}


class Player {

  def nextMove(pos:Pos):Board = new Board

}

但是Pos好像没有被识别。 正确的写法是什么?

您声明它的方式使 package object tiktaktoepackage tiktaktoe 内。所以完全限定的包名称是 tiktaktoe.tiktaktoe.Pos。通常,包对象在一个名为 package.scala 的单独文件中声明,并且它们应该在 上方 所需目标的包中声明(在这种特定情况下,什么都没有)。

如果你想要一个更长的包名:

package.scala:

package longer.name

package object tiktaktoe {

  type Pos = (Int, Int)

}

Board.scala:

package longer.name.tiktaktoe

class Board {

  val board = List.fill(3, 3)(0)

  def isValidPosition(pos:Pos):Boolean = true 

}