返回用户定义的类类型Scala的列表

时间:2018-06-01 23:38:18

标签: scala list indexing functional-programming

我正在尝试返回以下函数中未满的所有列的列表。 “isColumnFull”函数将检查列表是否已满。 GameState是列表的列表。我不确定错误在哪里。你能帮忙吗?

type GameState = List[List[String]]

case class ColumnNum(index: Int)

val count = 0 //not sure this is needed
def allViableColumns(game: GameState): List[ColumnNum] = 
for((xs, count) <- game.zipWithIndex) yield {if(!isColumnFull(xs))List(count+1)} 

1 个答案:

答案 0 :(得分:3)

如果您想要列的索引:

type GameState = List[List[String]]
case class ColumnNum(index: Int)
def allViableColumns(game: GameState): List[ColumnNum] = 
  for((xs, i) <- game.zipWithIndex; if !isColumnFull(xs)) yield ColumnNum(i + 1)

如果你想要列,那就是:

def allViableColumns(game: GameState): List[List[String]] = 
  game filterNot isColumnFull

如果您决定使用第一个版本,请考虑将(i + 1)更改为i:基于一个索引通常没有充分理由。