LoginSignup
0
0

More than 5 years have passed since last update.

Scala便利系機能

Last updated at Posted at 2015-08-15

よく忘れるので、自分用メモ。随時増やす。

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)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0