初心者Scala in F@N 第一回
初心者
or
scala
scala
    REPL
scala> val i = 1 + 1
i: Int = 2
scala> i = 1 + 3
                     イミュータブル(再代入できない)



scala>   var j = 1 + 1
j: Int   = 2
scala>   j = 1 + 3
j: Int   = 4          ミュータブル(再代入できる)




  同じ変数に違う値を再代入するなんてバグ発生の元になるだけだから
           しない方がいいよという考え方
scala> val i:Int = 1 + 1
i: Int = 2

scala> val i     = 1 + 1
i: Int = 2
                    iの型を省略できる →
           1 + 1の結果からiはInt型になるだろうと推論している
                         (型推論)
メソッドと関数

scala> def addOne(x: Int): Int = x + 1
addOne: (x: Int)Int

scala> val addOne = (x: Int) => x + 1
addOne: (Int) => Int = <function1>

scala> addOne(1)
res1: Int = 2
カリー化




scala> def multiply(m: Int)(n: Int): Int = m * n

scala> multiply(2)(3)

scala> val timesTwo = multiply(2) _

scala> timesTwo(3)
List定義




scala> val list = List(1, 2, 3, 4, 5)
list: List[Int] = List(1, 2, 3, 4, 5)
List map




scala> list.map((i: Int) => i * 2)


---
java
List<Integer> result = new ArrayList<>();
for(int i = 0; i < list.size; i++) {
    result.add(list.get(i) * 2);
}
List map




scala> list.map((i: Int) => i * 2)

scala> list.map(_ * 2)

scala> val f = (i: Int) => i * 2
scala> list.map(f)
List foreach




scala> list.foreach(println(_))
List filter




scala> list.filter(_ % 2 == 0)
List zip




scala> val list2 = List(6, 7, 8, 9, 0)
scala> list.zip(list2)
List partition




scala> list.partition((_ % 2 == 0))
List foldLeft,foldRight




scala> list.foldLeft(0)((m: Int, n: Int) => m + n)
scala> list.foldLeft(0)(_ + _)
res28: Int = 15

scala> list.foldRight(0)((m: Int, n: Int) => m + n)
scala> list.fold Right(0)(_ + _)
res28: Int = 15
List




ScalaDoc
http://www.scala-
lang.org/api/current/index.html#scala.collect
ion.immutable.List

Scala              API
http://scalajp.github.com/scala-collections-
doc-ja/

fanscala1 2 scalaの基本