私有Scala方法的可见性问题

时间:2015-08-15 09:21:27

标签: scala methods call private

我有以下Scala代码片段,是包含更多类的更大源文件的一部分,包含私有字段,方法和公共方法:

class Grid {

  private val cells = Vector(
    Vector(new Cell, new Cell, new Cell),
    Vector(new Cell, new Cell, new Cell),
    Vector(new Cell, new Cell, new Cell)
  )



 private def tranpose(grid:Vector[Vector[Cell]]) : Vector[Vector[Cell]] = {
    val newgrid = Vector(
      Vector(grid(0)(0), grid(1)(0), grid(2)(0)),
      Vector(grid(0)(1), grid(1)(1), grid(2)(1)),
      Vector(grid(0)(2), grid(1)(2), grid(2)(2))
      )
    newgrid
     }

  // Determine winner or draw
    def wins(symbol:Char):Boolean  = {
       val fullvec = Vector(symbol, symbol, symbol)
       for(r<-cells)
          if(r.equals(fullvec))
            true

        // Transpose the grid into a new one and make the same check again
        val transpgrid = transpose(cells)
        for(r<-transpgrid)
           if(r.equals(fullvec))
             true

        // Now check diagonals
        val maindiag = Vector(cells(0)(0), cells(1)(1), cells(2)(2))
        val seconddiag = Vector(cells(0)(2), cells(1)(1), cells(2)(0))
        if(maindiag.equals(fullvec) || seconddiag.equals(fullvec)) 
           true
         false
    }

val transpgrid = transpose(cells)方法中的代码行wins中,scala向我提供了以下消息:

jasonfil@hp ~/AtomicScala/examples $ scala TicTacToe.scala 
TicTacToe.scala:69: error: not found: value transpose
    val transpgrid = transpose(cells)

我尝试在调用this之前添加关键字transpose,但我没有运气。我是语言的新手,并且假设我在通话时犯了一些错误。

//编辑:我已经标记了此帖子以供主持人批准和删除,因为很明显我没有足够重视创建最小的例子(明显错字)。但是,我已经意识到我的这个代码的另一个错误是从代码区域中自由地不使用“return”关键字明确而不是它们各自方法的最后一行。昨天这给我带来了很多心痛,但我从心痛中学到了很多。

1 个答案:

答案 0 :(得分:1)

您有拼写错误 - private def tranpose应为private def transpose