2012-08-13 134 views
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

我想,也許咖喱的功能,但不能確定語法的通用方法。

只是爲了澄清,chunksSeq[Seq[String]]batchGet返回List[T]其中TtablezoutputSeq[TableZ]

+0

我不能告訴你指望這些東西有什麼類型。 – 2012-08-13 02:09:04

+0

@KenBloom查看更新的問題 – Bob 2012-08-13 02:20:32

回答

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 
}