3

私は次のような2Dリストを持っています:

type Board = List[List[Option[Move]]]

このように少し見えます:

None None Some(X)
None None None
None None None

通常の収集方法、マップ、フォールドなどを使用して行を作成できます。ただし、同様の方法で列を操作できるようにしたいと考えています。私は次のような方法で約1時間運がない(マインドブランク)ことを試みてきました:

def getColumn(board: Board, column: Int): List[Option[Move]]

上記の配列を考えると、呼び出しgetColumn(board, 2)て、私は受け取る必要がありますList(None, None, Some(X))

4

2 に答える 2

4

あなたが探しているのはList.transposeだと思います。これにより、基本的に、すべての列がグループ化されるようにリストがローテーションされます。したがって、あなたの方法は次のようになります。

def getColumn(board: Board, column: Int): List[Option[Move]] = board.transpose.apply(column)
于 2012-12-23T04:08:42.353 に答える
2

ライアンの答えは正しいです、そしてまた好まれます。「転置」が存在することに気付かずに、数分間実験しました。これが私の組み込みではないアプローチです:

def getColumn(board: Board, column: Int): List[Option[Move]] =
  for { r <- board } yield r(column)

2012/12/23-@dhgコメントを反映するように更新

于 2012-12-23T04:24:25.610 に答える