ぶろぐ

日記です

ふつうのコトをふつうに


[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ちゃんは豊富、って感じ。(多分関数型言語全般)