scala> var num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num.head
res38: Int = 1
scala> num.tail
res39: List[Int] = List(2, 3, 4)
scala> num.sum
res40: Int = 10
scala> val myList = List(1,2,3,3,2,1,1,1,3,3,2,2)
myList: List[Int] = List(1, 2, 3, 3, 2, 1, 1, 1, 3, 3, 2, 2)
scala> val distinctt = myList.distinct
distinctt: List[Int] = List(1, 2, 3)
scala> val distt = myList.toSet
distt: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
scala> val d = distt.toList
d: List[Int] = List(1, 2, 3)
scala> myList.size
res52: Int = 12
scala> myList.length
res53: Int = 12
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num(0)
res54: Int = 1
scala> num(2)
res55: Int = 3
scala> num(3)
res56: Int = 4
scala> num.size
res57: Int = 4
scala> num.length
res58: Int = 4
scala> num.reverse
res59: List[Int] = List(4, 3, 2, 1)
scala> num.min
res60: Int = 1
scala> num.sum
res61: Int = 10
scala> num.max
res62: Int = 4
scala> num.isEmpty
res63: Boolean = false
scala> val myL = List()
myL: List[Nothing] = List()
scala> myL.isEmpty
res64: Boolean = true
scala> val myL = List(1,2,3,4)
myL: List[Int] = List(1, 2, 3, 4)
scala> myL.isEmpty
res65: Boolean = false
//Array of integer
scala> var num = Array(1,2,3,4,5)
num: Array[Int] = Array(1, 2, 3, 4, 5)
scala> num(0)=10
scala> num(2)=20
scala> num
res68: Array[Int] = Array(10, 2, 20, 4, 5)
scala> var languages = Array("Scala","Java","Python","JavaScript")
languages: Array[String] = Array(Scala, Java, Python, JavaScript)
scala> languages.head
res70: String = Scala
scala> languages.tail
res71: Array[String] = Array(Java, Python, JavaScript)
scala> languages(0)
res72: String = Scala
scala> languages(1)
res73: String = Java
scala> languages(2)
res74: String = Python
scala> languages(3)
res75: String = JavaScript
// change the Array element values
scala> num
res77: Array[Int] = Array(10, 2, 20, 4, 5)
scala> num(0)=1
scala> num(2)=3
scala> num
res80: Array[Int] = Array(1, 2, 3, 4, 5)
scala> languages
res81: Array[String] = Array(Scala, Java, Python, JavaScript)
scala> languages(0)="C#"
scala> languages(1)="COBOL"
scala> languages(2)="Lisp"
scala> languages
res85: Array[String] = Array(C#, COBOL, Lisp, JavaScript)
Array size is fixed
mutable Array is dynamically grow
ArrayBuffer size can dynamically grow
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> var cars = new ArrayBuffer[String]()
cars: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()
scala> cars += "BMW"
res86: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW)
scala> cars += "Jaguar"
res87: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar)
scala> cars += "Ford"
res88: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar, Ford)
scala> cars.foreach(println)
BMW
Jaguar
Ford
scala> cars-="Ford"
res90: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar)
scala> cars-="BMW"
res91: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar)
scala> cars
res92: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar)
scala> cars+="Hundai"
res93: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar, Hundai)
scala> cars
res94: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar, Hundai)
scala> var numbers = new ArrayBuffer[Int]()
numbers: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> numbers += 100
res95: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100)
scala> numbers += 101
res96: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101)
scala> numbers += 102
res97: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101, 102)
scala> numbers.length
res98: Int = 3
scala> numbers += 103
res99: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101, 102, 103)
scala> numbers.length
res100: Int = 4
scala> cars.foreach(println)
Jaguar
Hundai
scala> cars.trimEnd(1) -- remove last element
scala> cars.foreach(print)
Jaguar
scala> cars.trimEnd(1)
scala> cars.foreach(print)
scala> cars.insert(0,"Bentley")
scala> cars.insert(1,"BMW")
scala> cars.insert(2,"Maruthi")
scala> cars.foreach(println)
Bentley
BMW
Maruthi
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num.map(x => x+x)
res113: List[Int] = List(2, 4, 6, 8)
scala> num.map(x => x*x)
res114: List[Int] = List(1, 4, 9, 16)
scala> num.map(x => x*x*x)
res115: List[Int] = List(1, 8, 27, 64)
scala> val n = num.map(x => (x,x+1,x+2,x+3))
n: List[(Int, Int, Int, Int)] = List((1,2,3,4), (2,3,4,5), (3,4,5,6), (4,5,6,7))
scala> val n = num.map(x => (x,x*1,x*2,x*3))
n: List[(Int, Int, Int, Int)] = List((1,1,2,3), (2,2,4,6), (3,3,6,9), (4,4,8,12))
scala> val n = num.map(x => x+1)
n: List[Int] = List(2, 3, 4, 5)
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num.map(x => x*x).map(x => -x).map(x => x+1)
res117: List[Int] = List(0, -3, -8, -15)
scala> val fruitList = List("Apple","Orange","Mango","Grapes","Sapotta")
fruitList: List[String] = List(Apple, Orange, Mango, Grapes, Sapotta)
// length of each element
scala> fruitList.map( x=> (x,x.length))
res121: List[(String, Int)] = List((Apple,5), (Orange,6), (Mango,5), (Grapes,6), (Sapotta,7))
scala> fruitList.filter(x => x.length > 5)
res118: List[String] = List(Orange, Grapes, Sapotta)
scala> fruitList.filter(x => x.length <= 5)
res120: List[String] = List(Apple, Mango)
scala> fruitList.map( x=> (x,x.size))
res122: List[(String, Int)] = List((Apple,5), (Orange,6), (Mango,5), (Grapes,6), (Sapotta,7))
Rating
scala> val rating = List(2.4, 5.6,7.4, 8.9)
rating: List[Double] = List(2.4, 5.6, 7.4, 8.9)
scala> val marks = rating.map (x => x * 10)
marks: List[Double] = List(24.0, 56.0, 74.0, 89.0)
scala> val gradeB = marks.filter (x => x >=60 && x <= 74)
gradeB: List[Double] = List(74.0)
scala> val gradeBRating = gradeB.map (x => x / 10)
gradeBRating: List[Double] = List(7.4)
nested functions:
scala> object nestedFuncEg{
def main(arg: Array[String]) {
def square(x: Double): Double ={
return x * x
}
def sumsquares(x: Double, y:Double): Double ={
return square(x) + square(y)
}
println("Sum of Squares :" + sumsquares(2,3))
}
}
defined object nestedFuncEg
// run it
scala> nestedFuncEg.main(null)
Sum of Squares :13.0
scala> class MyClass(msg:String) {
def sayHi = { println (msg) }
}
defined class MyClass
scala> val ob = new MyClass("Mumbai")
ob: MyClass = MyClass@190cc39e
scala> ob.sayHi
Mumbai
scala> class MyClass(msg:String) {
def sayHi = { println (msg) }
}
defined class MyClass
scala> object classEg {
def main(arg:Array[String]){
var ob1 = new MyClass("Hello Singapore")
ob1.sayHi
var ob2 = new MyClass("Hello London")
ob2.sayHi
var ob3 = new MyClass("Hello Srilanka")
ob3.sayHi
}
}
defined object classEg
scala> classEg.main(null)
Hello Singapore
Hello London
Hello Srilanka
object funcByValEx{
def main(args:Array[String]){
def time(): Long ={
println("Inside Time Function")
return System.nanoTime()
}
def exec(t:Long) : Long = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
return t
}
println("Main Function : " + exec(time()))
}
}
scala> funcByValEx.main(null)
Inside Time Function
Inside Exec Function
Time : 34709256789660
Exiting from Exec function
Main Function : 34709256789660
// Return statement specified
object funcByValEx{
def main(args:Array[String]){
def time() ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time()))
}
}
//Return statement is optional
scala> object funcByValEx{
def main(args:Array[String]){
def time() ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time))
}
}
defined object funcByValEx
scala> funcByValEx.main(null)
Inside Time Function
Inside Exec Function
Time : 34769862864743
Exiting from Exec function
Main Function : 34769862864743
object funcByValEx{
def main(args:Array[String]){
def time ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time))
}
}
num: List[Int] = List(1, 2, 3, 4)
scala> num.head
res38: Int = 1
scala> num.tail
res39: List[Int] = List(2, 3, 4)
scala> num.sum
res40: Int = 10
scala> val myList = List(1,2,3,3,2,1,1,1,3,3,2,2)
myList: List[Int] = List(1, 2, 3, 3, 2, 1, 1, 1, 3, 3, 2, 2)
scala> val distinctt = myList.distinct
distinctt: List[Int] = List(1, 2, 3)
scala> val distt = myList.toSet
distt: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
scala> val d = distt.toList
d: List[Int] = List(1, 2, 3)
scala> myList.size
res52: Int = 12
scala> myList.length
res53: Int = 12
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num(0)
res54: Int = 1
scala> num(2)
res55: Int = 3
scala> num(3)
res56: Int = 4
scala> num.size
res57: Int = 4
scala> num.length
res58: Int = 4
scala> num.reverse
res59: List[Int] = List(4, 3, 2, 1)
scala> num.min
res60: Int = 1
scala> num.sum
res61: Int = 10
scala> num.max
res62: Int = 4
scala> num.isEmpty
res63: Boolean = false
scala> val myL = List()
myL: List[Nothing] = List()
scala> myL.isEmpty
res64: Boolean = true
scala> val myL = List(1,2,3,4)
myL: List[Int] = List(1, 2, 3, 4)
scala> myL.isEmpty
res65: Boolean = false
//Array of integer
scala> var num = Array(1,2,3,4,5)
num: Array[Int] = Array(1, 2, 3, 4, 5)
scala> num(0)=10
scala> num(2)=20
scala> num
res68: Array[Int] = Array(10, 2, 20, 4, 5)
scala> var languages = Array("Scala","Java","Python","JavaScript")
languages: Array[String] = Array(Scala, Java, Python, JavaScript)
scala> languages.head
res70: String = Scala
scala> languages.tail
res71: Array[String] = Array(Java, Python, JavaScript)
scala> languages(0)
res72: String = Scala
scala> languages(1)
res73: String = Java
scala> languages(2)
res74: String = Python
scala> languages(3)
res75: String = JavaScript
// change the Array element values
scala> num
res77: Array[Int] = Array(10, 2, 20, 4, 5)
scala> num(0)=1
scala> num(2)=3
scala> num
res80: Array[Int] = Array(1, 2, 3, 4, 5)
scala> languages
res81: Array[String] = Array(Scala, Java, Python, JavaScript)
scala> languages(0)="C#"
scala> languages(1)="COBOL"
scala> languages(2)="Lisp"
scala> languages
res85: Array[String] = Array(C#, COBOL, Lisp, JavaScript)
Array size is fixed
mutable Array is dynamically grow
ArrayBuffer size can dynamically grow
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> var cars = new ArrayBuffer[String]()
cars: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()
scala> cars += "BMW"
res86: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW)
scala> cars += "Jaguar"
res87: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar)
scala> cars += "Ford"
res88: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar, Ford)
scala> cars.foreach(println)
BMW
Jaguar
Ford
scala> cars-="Ford"
res90: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(BMW, Jaguar)
scala> cars-="BMW"
res91: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar)
scala> cars
res92: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar)
scala> cars+="Hundai"
res93: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar, Hundai)
scala> cars
res94: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Jaguar, Hundai)
scala> var numbers = new ArrayBuffer[Int]()
numbers: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> numbers += 100
res95: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100)
scala> numbers += 101
res96: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101)
scala> numbers += 102
res97: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101, 102)
scala> numbers.length
res98: Int = 3
scala> numbers += 103
res99: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(100, 101, 102, 103)
scala> numbers.length
res100: Int = 4
scala> cars.foreach(println)
Jaguar
Hundai
scala> cars.trimEnd(1) -- remove last element
scala> cars.foreach(print)
Jaguar
scala> cars.trimEnd(1)
scala> cars.foreach(print)
scala> cars.insert(0,"Bentley")
scala> cars.insert(1,"BMW")
scala> cars.insert(2,"Maruthi")
scala> cars.foreach(println)
Bentley
BMW
Maruthi
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num.map(x => x+x)
res113: List[Int] = List(2, 4, 6, 8)
scala> num.map(x => x*x)
res114: List[Int] = List(1, 4, 9, 16)
scala> num.map(x => x*x*x)
res115: List[Int] = List(1, 8, 27, 64)
scala> val n = num.map(x => (x,x+1,x+2,x+3))
n: List[(Int, Int, Int, Int)] = List((1,2,3,4), (2,3,4,5), (3,4,5,6), (4,5,6,7))
scala> val n = num.map(x => (x,x*1,x*2,x*3))
n: List[(Int, Int, Int, Int)] = List((1,1,2,3), (2,2,4,6), (3,3,6,9), (4,4,8,12))
scala> val n = num.map(x => x+1)
n: List[Int] = List(2, 3, 4, 5)
scala> val num = List(1,2,3,4)
num: List[Int] = List(1, 2, 3, 4)
scala> num.map(x => x*x).map(x => -x).map(x => x+1)
res117: List[Int] = List(0, -3, -8, -15)
scala> val fruitList = List("Apple","Orange","Mango","Grapes","Sapotta")
fruitList: List[String] = List(Apple, Orange, Mango, Grapes, Sapotta)
// length of each element
scala> fruitList.map( x=> (x,x.length))
res121: List[(String, Int)] = List((Apple,5), (Orange,6), (Mango,5), (Grapes,6), (Sapotta,7))
scala> fruitList.filter(x => x.length > 5)
res118: List[String] = List(Orange, Grapes, Sapotta)
scala> fruitList.filter(x => x.length <= 5)
res120: List[String] = List(Apple, Mango)
scala> fruitList.map( x=> (x,x.size))
res122: List[(String, Int)] = List((Apple,5), (Orange,6), (Mango,5), (Grapes,6), (Sapotta,7))
Rating
scala> val rating = List(2.4, 5.6,7.4, 8.9)
rating: List[Double] = List(2.4, 5.6, 7.4, 8.9)
scala> val marks = rating.map (x => x * 10)
marks: List[Double] = List(24.0, 56.0, 74.0, 89.0)
scala> val gradeB = marks.filter (x => x >=60 && x <= 74)
gradeB: List[Double] = List(74.0)
scala> val gradeBRating = gradeB.map (x => x / 10)
gradeBRating: List[Double] = List(7.4)
nested functions:
scala> object nestedFuncEg{
def main(arg: Array[String]) {
def square(x: Double): Double ={
return x * x
}
def sumsquares(x: Double, y:Double): Double ={
return square(x) + square(y)
}
println("Sum of Squares :" + sumsquares(2,3))
}
}
defined object nestedFuncEg
// run it
scala> nestedFuncEg.main(null)
Sum of Squares :13.0
scala> class MyClass(msg:String) {
def sayHi = { println (msg) }
}
defined class MyClass
scala> val ob = new MyClass("Mumbai")
ob: MyClass = MyClass@190cc39e
scala> ob.sayHi
Mumbai
scala> class MyClass(msg:String) {
def sayHi = { println (msg) }
}
defined class MyClass
scala> object classEg {
def main(arg:Array[String]){
var ob1 = new MyClass("Hello Singapore")
ob1.sayHi
var ob2 = new MyClass("Hello London")
ob2.sayHi
var ob3 = new MyClass("Hello Srilanka")
ob3.sayHi
}
}
defined object classEg
scala> classEg.main(null)
Hello Singapore
Hello London
Hello Srilanka
object funcByValEx{
def main(args:Array[String]){
def time(): Long ={
println("Inside Time Function")
return System.nanoTime()
}
def exec(t:Long) : Long = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
return t
}
println("Main Function : " + exec(time()))
}
}
scala> funcByValEx.main(null)
Inside Time Function
Inside Exec Function
Time : 34709256789660
Exiting from Exec function
Main Function : 34709256789660
// Return statement specified
object funcByValEx{
def main(args:Array[String]){
def time() ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time()))
}
}
//Return statement is optional
scala> object funcByValEx{
def main(args:Array[String]){
def time() ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time))
}
}
defined object funcByValEx
scala> funcByValEx.main(null)
Inside Time Function
Inside Exec Function
Time : 34769862864743
Exiting from Exec function
Main Function : 34769862864743
object funcByValEx{
def main(args:Array[String]){
def time ={
println("Inside Time Function")
System.nanoTime()
}
def exec(t:Long) = {
println("Inside Exec Function")
println("Time : " + t)
println("Exiting from Exec function")
t
}
println("Main Function : " + exec(time))
}
}