Scala supports REPL (Read Evaluate Print Loop) interactive shell
scala> val x:Int = 100
x: Int = 100
scala> val x = 100
x: Int = 100
scala> val y:Double = 12.90
y: Double = 12.9
scala> val str :String ="Hello"
str: String = Hello
scala> val ch:Char ='I'
ch: Char = I
scala> val a:Int = ch
a: Int = 73
scala> val a:Int = 'a'
a: Int = 97
scala> val d = 123.45
d: Double = 123.45
scala> val i:Int = d
<console>:11: error: type mismatch;
found : Double
required: Int
val i:Int = d
^
scala> val i:Int = d.toInt
i: Int = 123
scala> val l:Long = 1000
l: Long = 1000
scala> val i:Int = l.toInt
i: Int = 1000
scala> val x = 10
x: Int = 10
scala> val y = 15
y: Int = 15
scala> x<y
res101: Boolean = true
scala> val d = 90.34
d: Double = 90.34
scala> d.getClass()
res102: Class[Double] = double
Tuples
scala> val info = (101,"Amar",24,50000) info: (Int, String, Int, Int) = (101,Amar,24,50000)
scala> info._1 res103: Int = 101
scala> info._4 res104: Int = 50000
Blocking Statements
scala> var x ={
| val a = 10
| val b = a+10
| b
| }
x: Int = 20
Conditional Operators
scala> val a = 10 a: Int = 10
scala> val b = 15 b: Int = 15
scala> val big = if (a>b) a else b big: Int = 15
scala> val c = 12 c: Int = 12
scala> val big = if(a>b) if(a>c) a else c else if(b>c) b else c big: Int = 15
scala> val big = a>b match {
| case true => a
| case false => b
| }
big: Int = 15
scala> val big = a>b match {
| case true => if(a>c) a else c
| case false => if(b>c) b else c
| }
big: Int = 15
scala> val status = 3 status: Int = 3
scala> val stat = status match{
| case 0 => "Single"
| case 1 => "Married"
| case 2 => "Divorced"
| case 3 => "Widowed"
| case other => "Invalid"
| }
stat: String = Widowed
scala> val d = "wed" d: String = wed
scala> val dtype = d match{
| case "mon" | "tue" | "wed" | "thu" | "fri" => "Working day"
| case other => "weekend"
| }
dtype: String = Working day
Loops
scala> for (x<- 1 to 10) | println(x) 1 2 3 4 5 6 7 8 9 10
scala> var tot = 0 tot: Int = 0
scala> for (x<- 1 to 10) | tot += x
scala> tot res107: Int = 55
scala> for (x<- 1 to 7) | println(s"Day $x") Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7
Yield
scala> for (x<- 1 to 7) | yield(s"Day $x") res109: scala.collection.immutable.IndexedSeq[String] = Vector(Day 1, Day 2, Day 3, Day 4, Day 5, Day 6, Day 7)
While
scala> var x=10 x: Int = 10
scala> while (x>0) {
| println(x)
| x-=1
| }
10
9
8
7
6
5
4
3
2
1
Functions
scala> def samp:String = "Sampling" samp: String
scala> samp res111: String = Sampling
scala> samp() <console>:12: error: not enough arguments for method apply: (index: Int)Char in class StringOps. Unspecified value parameter index. samp() ^
scala> def samp(x:Int) : Int =
| {
| x + 10
| x + 20
| }
samp: (x: Int)Int
scala> samp(20) res113: Int = 40
Passing multiple values
scala> def multiplate(x:Int, y:Int) : Int =
| {
| x*y
| }
multiplate: (x: Int, y: Int)Int
scala> multiplate(20,30) res114: Int = 600
scala> multiplate(x=20,y=30) res115: Int = 600
scala> multiplate(y=30,x=20) res116: Int = 600
Recursive functions
scala> def power(x:Int, n:Int) : Int =
| {
| if(n>=1) x*power(x,n-1) else 1
| }
power: (x: Int, n: Int)Int
scala> power(10,0) res117: Int = 1
scala> power(10,3) res118: Int = 1000