よく忘れるので、自分用メモ。随時増やす。
import
別名をつけてインポート
import scala.collection.immutable.{Seq => ISeq}
SeqをISeqで使える。
配列系
zip(Array、AbstractSeq、とか)
二つの要素の内容をタプルにしてひとつの要素にする。
二つの要素の数が違う場合は多いほうは捨てられる。
val a = Array(1, 2, 3, 4)
val b = Array(10, 20, 30)
val c = a.zip(b)
for (i <- c) println(i)
実行結果
(1, 10)
(2, 20)
(3, 30)
aの4が捨てられる。
unzip(Array、AbstractSeq、とか)
zipの逆。
val origin = Array((1, 10), (2, 20))
val (a, b) = origin.unzip
for (i <- a) println(i)
for (i <- b) println(i)
実行結果
1
2
10
20
map (Array、AbstractSeq、とか)
配列の各要素に引数の関数の操作を実行し、新たな配列を作る。
val a = Array(1, 2)
val b = a.map(_ * 10)
for (i <- b) println(i)
実行結果
10
20
reduce(Array、AbstractSeq、とか)
言葉で説明するが難しい・・・
要素の0番と1番を関数に渡してその結果と、要素の2番の結果を関数に渡して・・・
val a = Array(1, 2, 3, 4)
val b = a.reduce(_ + _)
println(b)
実行結果
10
flatMap
Optionの配列からNoneの値を取り除ける
val seq: Seq[Option[String]] = Seq(Option("1"), None, Option("2"))
val noOpt: Seq[String] = seq.flatMap(s => s)
println(noOpt)
実行結果
List(1, 2)
Future操作
Future.sequence
Futureの配列などをFutureを外側に持ってこれる
val seq: Seq[Future[Int]]
val future: Future[Seq[Int]] = Future.sequence(seq)