hautrian:scala 2001> scala Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_252). Type in expressions for evaluation. Or try :help. scala> 3+4 res0: Int = 7 scala> res0 res1: Int = 7 scala> val x = 5 x: Int = 5 scala> x + 4 res2: Int = 9 scala> x = 4 :12: error: reassignment to val x = 4 ^ scala> var y = "Hello" y: String = Hello scala> y = y + " World!" y: String = Hello World! scala> y res3: String = Hello World! scala> def inc(x) = x+1 :1: error: ':' expected but ')' found. def inc(x) = x+1 ^ scala> def inc(x:Int) = x+1 inc: (x: Int)Int scala> inc(5)*2 res4: Int = 12 scala> class ListInt(elem: Int, next: ListInt) defined class ListInt scala> val xs = new ListInt(1, new ListInt(2, null)) xs: ListInt = ListInt@724bf25f scala> class List[T](elem: T, next: List[T]) defined class List scala> val xs = new List(1, new List(2, null)) xs: List[Int] = List@4b87760e scala> class List[T](elem: T, next: List[T]) { | def printList():Unit = { | println(elem) | if (next != null) next.printList() | } | } defined class List scala> val xs = new List(1, new List(2, null)) xs: List[Int] = List@269222ae scala> xs.printList() 1 2 scala> xs.printList 1 2 scala> xs printList warning: there was one feature warning; re-run with -feature for details 1 2 scala> 1+2 res8: Int = 3 scala> (1).+(2) res9: Int = 3 scala> val inc = (x:Int) => x+1 inc: Int => Int = scala> inc(3) res10: Int = 4 scala> val num14 = List(1,2,3,4) num14: List[Int] = List(1, 2, 3, 4) scala> num14.filter((x:Int) => x > 2) res11: List[Int] = List(3, 4) scala> num14.filter((x) => x > 2) res12: List[Int] = List(3, 4) scala> num14.filter(x => x > 2) res13: List[Int] = List(3, 4) scala> num14.filter(_ > 2) res14: List[Int] = List(3, 4) scala> def add(a: Int, b: Int) = a + b add: (a: Int, b: Int)Int scala> def inc = add(1,_) :12: error: missing parameter type for expanded function ((x$1) => add(1, x$1)) def inc = add(1,_) ^ scala> def inc = add(1,_:Int) inc: Int => Int scala> inc(6) res15: Int = 7 scala> def twice(f: Int => Int, x: Int) = f(f(x)) twice: (f: Int => Int, x: Int)Int scala> twice(inc,42) res16: Int = 44 scala> def twice[A](f: A => A, x: A) = f(f(x)) twice: [A](f: A => A, x: A)A scala> twice(inc,42) res17: Int = 44 scala> twice((x: Boolean) => !x, true) res18: Boolean = true scala> def byValue(x: Int, y: Int) = if (x==0) y else x byValue: (x: Int, y: Int)Int scala> byValue(42, 99) res19: Int = 42 scala> byValue(42, 1/0) java.lang.ArithmeticException: / by zero ... 32 elided scala> def byName(x: Int, y: =>Int) = if (x==0) y else x byName: (x: Int, y: => Int)Int scala> byName(42, 1/0) res21: Int = 42 scala> def m(y: Int) = | y match { | case 0 => "null" | case 42 => "meaning of life" | case _ => "something else" | } m: (y: Int)String scala> m(0) res22: String = null scala> m(41) res23: String = something else scala> m(42) res24: String = meaning of life scala> def generalSize(x: Any) = x match { | case s: String => s.length | case m: Map[_,_] => m.size | case _ => -1 | } generalSize: (x: Any)Int scala> generalSize("sgssgsg") res25: Int = 7 scala>