scala在包中定义类型

时间:2015-12-28 14:04:33

标签: scala 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似乎并未得到认可。 写它的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

您声明它的方式使package object tiktaktoe位于package 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 

}