0

私はこのコードスニペットを持っています:

val chunks = blob.map(_.id).distinct.grouped(100).toSeq 
val output = (for (chunk <- chunks) yield { 
  MyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala }).flatten

これを、パラメーターとして受け取る汎用メソッドに変換したいと思いますblob.map(_.id).distinctMyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala

おそらくカリー化された関数だと思いますが、構文については不明です。

明確にするために、chunksis aは、is 、isSeq[Seq[String]]batchGet返します。List[T]TtablezoutputSeq[TableZ]

4

1 に答える 1

2

私は次のことがうまくいくと思います:

def getInGroups[T,U](ids: Seq[T], groupSize: Int = 100)(getter: Seq[T] => Seq[U]): Seq[U] = {
   ids.grouped(groupSize).flatMap{ chunk =>  getter(chunk) }.toSeq
}

次のように呼び出します

getInGroups(blob.map(_.id).distinct){ chunk => 
   MyDataStore.batchGet("tablez", chunk.asJava, classOf[TableZ], true).asScala
}
于 2012-08-13T02:27:56.853 に答える