Sunday, December 15, 2019

2. SCALA : PROGRAMMING

2. SCALA : PROGRAMMING

For All materials https://drive.google.com/open?id=1JaXdI37xCkYsJHiou5-WK3g03LuVSVLD

LAB
############################################

1> SCALA as CLI, Interpreter
-----------------------------------
webconsole
username
password
spark2-shell

##############################################
var a = 10  //(Dynamically type inferred)
a = "pavan" //will give error (once datatype is defined it is fixed so its "Statically typed language"
val x = 100 //val is immutable, we cannot change

//block expression
var xyz = {
var p = 100
var q = 40
p - q
}

//condition
var x = 70
if(x > 50){
println("x is greater than 50")
}
else{
println("x is less than 50")
}

//It uses datatype "Any" ( IMP )
var abc = if(x > 50) {"more than 100"} else {20}

//match statement, same as switch
x match 
{
case 10 => {println("x is 10")}
case 20 => {println("x is 20")}
case 30 => {println("x is 30")}
case 70 => {println("x is 70")}
case none => {println("No match")}
}

//Loops (For, While, Do While)
1 to 5

for (i <- 1 to 5){
println("current value of is : "+i)
}

//nested for loop can be written as
for (i <- 1 to 3; j <- 1 to 3){
println((10 * i) + j)
}

var x = 5
while(x < 10){
println(x)
x++
}

//Collection
Array - similar data type & Fixed length
BufferArray
Map
Tuple
List

var arr = Array{1,2,3,4,5}
arr.length  //arr.  press Tab to show all methods available
arr(0)
arr(5)    //ArrayIndexBoundException
for(i <- 0 to arr.length-1)
OR
for(i <- arr)

var arr = new Array[String](5)
arr(0) = "Pavan"
arr

//Object create
------------------------------------------------------------------
object FirstObject extends Apps{
println("Hello all , welcome to the training");
var arr = new Array[String](5)
arr(0) = "Pavan"
arr(1) = "Madhu"
for(comp <- arr)
{
println(comp)
}

//no need to define a array
var ab = new scala.collection.mutuable.ArrayBuffer[String]
ab.append("pavan")
ab.append("madhu")

for(comp <- ab)
{
println(comp)
}

var mc = new scala.collection.mutable.Map[String, Sting]{"Name"-> "Pavan","Age"->"34","Name"->"Madhu")
println(mc("Name"))
println(mc("Age"))
for(k <- mc.keys)
{
println(k)
println("for key : "+k+" value is : "+mc(k))
}

}


------------------------------------------------------------------

JSON : Semi structured import scala.util.parsing.json.JSON
{ "id":"123", "Name":"Pavan", "Collegues":["madhu","shoith"], "Address": {"city":"Bangalore","state":"Karnataka"} } Option[Any] = JSON.parseFull(JsonString) Option[Any] -> Something/None (Map[String,Any]) Any is Map[String,Any] var jsonString = """{ "id":"123", "Name":"Pavan", "Collegues":["madhu","shoith"], "Address": {"city":"Bangalore","state":"Karnataka"} }"""
JSON.parseFull(jsonString) match { case Some(validJson) =>{ var mapJson = validJson.asInstanceOf[Map[String,Any]] for(k <- mapSon.keys){ if(mapJson(k).isInstanceOf(Map[String,Any]]){ var valueMap = mapJson(k).isInstanceOf(Map[String,Any]] for(nk <- valueMap.keys){ println("for key : "+k+" value : key : "+nk+", value : "+valueMap(k)) } } else{ println("for key : "+k+" value is : "+mapSon(k)) } } case none => { println("Invalid JSON") } } Tuple ------------- -> Like a row of table (collection of different datatype) Eid,name,salary,dept 1,"Pavan"50000.00,"IT" var tup = (1,"Pavan"50000.00,"IT") println(tup.getClass) println(tup._1) println(tup._2) println(tup._3) Set (wont allow duplicate & Not index based) -------------- var st = Set(1,2,3,4,5,5) println(st.size) st.head //1 but we may get 5 also since Set is not index based st.tail //2,3,4,5 List (allow duplicate and index based) -------------- var st = List (1,2,3,4,5,5) println(st.size) st.head //1 always 1 st.tail //2,3,4,5 Function/Method ------------------- Function - Method - any function defined in class - class level function called as method How to define function: (last statement is always going to be return) --------------------------------------------------------------------------
------------------------------------SAME method in different ways to make it compact-------------------------------------
def calcArea(lng:Int, wdh:Int):Int= { var area = 0; area = lng * wdh area } println(calcArea(10,9)) OR def calcArea(lng:Int, wdh:Int):Int= {lng * wdh} println(calcArea(10,9)) OR def calcArea(lng:Int, wdh:Int):Int=lng * wdh println(calcArea(10,9)) OR def calcArea(lng:Int, wdh:Int)=lng * wdh println(calcArea(10,9))
----------------------------------------------------------------------------------------

Reccursive function ------------------ def factorial(input:Int):Int = { if(input ==1) { 1 } else{ input * factorial(input -1) } } println(3) println(5)











No comments:

Post a Comment