Scala で Array 等を制限に合わせて分割する
短く
grouped(size)
を使いましょう
背景
Scala で AWS Kinesis へ PutRecords しようとしたときに、上限に引っ掛かりました。
で今回抵触した上限というのが、PutRecords 1 回あたりに含められるレコード数で、500 までとのこと。*1
なので 500 毎に分割して PutRecords したいわけだけど、分割…あるはずだよなーと探して見つかりました。
方法
(1 to 10000) .grouped(500) // これ .foreach(put)
たったこれだけです。
ただまぁ自前で作ると脳みその裏側でいろいろ考えたりするわけですよ。
そも動くようにするところから始まり、速度とか、オブジェクト生成の回数とか、いろんな Collections への対応とか。
あるなら使うがベストです。こんなの絶対にあるはずですし
おわりに
名前がよくない!(理不尽)
splitAt
は違うしなぁとかで引っかかってました。
sliding
まで行きついてコード書いた後に、あれよく見たら grouped
あるやん、でやっとこさ到達しました。
Rust では chunk
で、そうか chunk
というワードがあったか、という感じ。検索のための語彙が増えました。