ふつうのコトをふつうに
[0,100,200] というListを受け取って、MySQLに0〜99, 100〜199のidを検索するクエリを組みたい。
forを回してid1, id2で受け取って処理するっていう感じかーというC言語脳で考えつつ、値をスライディングしていくんだねというところに注目してscalaのコレクション探したらslidingって関数があった。
scala> List(1,2,3,4,5).sliding(2).foreach( x=> println( s"${x.head} : ${x.last}" ) ) 1 : 2 2 : 3 3 : 4 4 : 5
こんなかんじっすよね
scala> List(0,100,200).sliding(2).foreach( x=> println( s"(value >= ${x.head} and value < ${x.last})" ) ) (value >= 0 and value < 100) (value >= 100 and value < 200)
groupedもいい
scala> List(1,2,3,4,5).grouped(2).toList res34: List[List[Int]] = List(List(1, 2), List(3, 4), List(5))
ふつうのコトをふつうにこなす、コレクション(データ構造)を取り扱うためのアルゴリズムがScalaちゃんは豊富、って感じ。(多分関数型言語全般)