SlideShare a Scribd company logo
1 of 39
Download to read offline
Scala in a nutshell
Kyel John. David
Software Engineer
DISCLAIMER
Some of the examples will be very crud. Purpose of the
examples just to get the basic ideas/concepts out
What is Scala
Scala is both functional and object oriented language
that operates under the JVM.
Acronym for "Scalable Language"
Supported by TypeSafe Inc
Why Scala
Both Functional and Object Oriented
JVM Based language
Higher Order Functions(Functions
as value Types)
"expressive" and "concise"
Almost all Java libraries can be used by Scala
Easier to write multi-threaded applications
Partial Functions
Pattern Matching
And more....
Basics
Variable Assignments and Declarations
scala> var stockPrice = 20.00
stockPrice: Double = 20.0
scala> var stockPrice = 40.00
stockPrice: Double = 40.0
scala> val numOfShares = 32
numOfShares: Int = 32
scala> numOfShares = 122
<console>:8: error: reassignment to val
       numOfShares = 122
                   ^
scala> val distance = { val dx = x ­ x0; val dy = y ­ y0; 
                         sqrt(dx * dx + dy * dy) 
                       }
scala> val person = new Person("Kyel",21)
val - (Read-only)
var - (Read-Write)
Variable Assignments and Declarations
//Specifying type information
scala> val person:Person = new Person("Kyel",21)
scala> val listItems: List[Int] = List(1,2,3,4,5)
Loops
/**Range Generates a 
/*sequence of Inclusive/exclusive 
/*sequence <start> to/until <end> <by increment>
**/
scala> 0 to 10
res7: scala.collection.immutable.Range.Inclusive
 = Range(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> 0 to 10 by 2
res11: scala.collection.immutable.Range 
= Range(0, 2, 4, 6, 8, 10)
scala> 0 until 10 by 2
res12: scala.collection.immutable.Range 
= Range(0, 2, 4, 6, 8)
For comprehension
for(i <­ 1 to 10){
   println(i)
}
for{
   i <­ 1 to 10
}{
    println(i)
}
//Iterator Guard
for(i <­ 1 to 10; if i % 2== 0; x2 = i * 2)
    println(i)
//Value binding
for(i <­ 1 to 10; x2 = i * 2; if i % 2 == 0 ) 
        println(x2)
"For yield"
for{
 i <­ 1 to 10
}yield{
  i
}
res5: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Function Definitions
scala> def abs(n: Int): Int = { 
           if(n < 0) ­n else n  
        }
abs: (n: Int)Int
scala> def abs(n: Int): Int = if(n < 0) ­n else n
abs: (n: Int)Int
scala> def abs(n: Int) =  if(n < 0) ­n else n
abs: (n: Int)Int
//"Generic" Function. 
//Type information
scala> def someOperation[A](x: A) = { x }
someOperation: [A](x: A)A
//Another Syntactic sugar for Scala  when writing 
//a function that has no arguments
scala> def noParameterFunction = { println("A function of no parameter") }
noParameterFunction: Unit
Function Definitions
def signum(n: Int): Int = {
    if(n>0) 1 else 0
}
def factorial(i: Int) = {
  @tailrec
  def fact(i: Int, accumulator: Int): Int = {
    if (i <= 1) accumulator
    else fact(i ­ 1, i * accumulator)
  }
  fact(i, 1)
}
//Prodedures in Scala, function definition
//that returns Unit 
//no '='
def procedure(x: Any) {
    print(x)
}
Function Type and Literals
scala> (x: Int, y: Int) => if( x > y ) x else y
(Int, Int) => Int = <function2>
scala> val max = res1
max: (Int, Int) => Int = <function2>
Basic example of a function type
Int => Int
Function Literals - Function with no names(Lambdas in
other language/Anonymous function)
HOF - Functions
def factorial(f: String => Unit) = {
  f("Hello, World!")
}
def operation(f: (Int,Int) => Int,x:Int, y:Int ): Int = { f(x,y) }
//An example of function composition
def func[A,B,C](f1: A => B, f2: B=>C): A => C  = {
    (a:A) =>  f2(f1(a))
  }
  
The _ operator
scala> def stringOps(s: String, f1: String => String) = {
     | if (s == null) " " else f1(s)
     | }
scala> val reverseString:String => String = (s:String) => s.reverse
reverseString: String => String = <function1>
scala> stringOps("Hello World",reverseString)
res12: String = dlroW olleH
//The magic of the "_" operator
scala> stringOps("Hello World", _.reverse)
res11: String = dlroW olleH
//Another way of declaring the reverseString function
scala> val reverseString:String => String =  _.reverse
reverseString: String => String = <function1>
Ex of Java to Scala
case class Message(message: String)
def sendPostcards: List[Message] = {
    val posters = List("John", "Lloyd", "Cruz"
                          "Bea Alonzo", "Nina Dobrev",
                          "Georgina Wilson", "Ashton Kutcher",
                          "Solenn Heussaff", "Mila Kunis",
                          "Marian Rivera")
    val  senders= List("Ding Dong", "Marian")
    var messageList: List[Message] = List()
    for (h <­ 0 until posters.length) {
        val sender = posters(h)
        for (i <­ 0 until senders.length) {
                messageList ::= new Message("Dear " + "Thank you for your wonderful Love, " + sender)
            }
        
    }
    messageList
}
Cleaning it up
def sendPostcards: List[Message] = {
    val posters = List("John", "Lloyd", "Cruz"
                          "Bea Alonzo", "Nina Dobrev",
                          "Georgina Wilson", "Ashton Kutcher",
                          "Solenn Heussaff", "Mila Kunis",
                          "Marian Rivera")
    val  senders= List("Ding Dong", "Marian")
  
  
    for{
      h <­ 0 until posters.length
      recipient = poster(h)
      i <­ 0 until senders.length;
      sender = senders(i)
    } yield {
        new Message("Dear " + recipient + ", " +
                                  "Thank you for your wonderful greeting "
                                  "Love, " + sender)
    
    }
}
Case Classes
Think of them as value objects or DTOs
All fields are immutable
No more boilerplate code(hashCode and equals has
been generated)
Can be used for Pattern Matching
Maximum of 22 fields only
Case Classes
scala> case class Person(name: String, age: Int)
defined class Person    
scala> val person1 = Person("Kyel",21)
person1: Person = Person(Kyel,21)
scala> val person2 = Person("Kyel",21)
person2: Person = Person(Kyel,21)
scala> person1 == person2
res10: Boolean = true
Classes
scala> class PatientInfo(n: String){
     | val name = n
     | def greet = s"Hello, I am ${name}"
     | override def toString = s"PatientInfo(${name})"
     | }
//Cleaner way way of declaring a class
scala> class PatientInfo(val name: String){
     | def greet = s"Hello, I am ${name}"
     | override def toString = s"PatientInfo(${name})"
     | }
defined class PatientInfo
Inheritance
scala> class A {
     |   def hi = "Hello from A"
     |   override def toString = getClass.getName
     | }
defined class A
scala> class B extends A
defined class B
scala> class C extends B {
     | override def hi = "Hello From C ­>" + super.hi
     | }
defined class C
scala> new C().hi
res5: String = Hello From C  ­> Hello From A
Polymorphism
scala> val a: A = new A
a: A = A
scala> val a: A = new B
a: A = B
scala> val b: B = new A
<console>:9: error: type mismatch;
 found   : A
 required: B
       val b: B = new A
                  ^
scala> val b: B = new B
b: B = B
Named Parameters
scala> class Vehicle(val make: String, var reserve: Boolean){
     | def setReserve(r:Boolean):Unit = { reserve = r }
     | }
defined class Vehicle
scala> vios.reserve
res0: Boolean = true
scala> vios.setReserve(false)
scala> vios.reserve
res2: Boolean = false
scala> val roadster = new Vehicle(reserve = true, make = "Tesla")
Another Example of Inheritance
scala> class Vehicle(val make: String, var reserve: Boolean){
     | def setReserve(r:Boolean):Unit = { reserve = r }
     | }
defined class Vehicle
scala> class Sedan(val color: String, reserved: Boolean,make:String)
|  extends Vehicle(make, reserved)
defined class Sedan
scala> val vios = new Sedan("Red",false,"Toyota")
vios: Sedan = Sedan@b11975
scala> println(s"Requested a ${vios.color} ${vios.make}")
Requested a Red Toyota
Classes with Type Parameters
scala> class Singular[A](element: A) extends Traversable[A] {     
     |   def foreach[B](f: A => B) = f(element)                   
     | }
defined class Singular
scala> val p = new Singular("Planes")
p: Singular[String] = (Planes)                                    
scala> p foreach println                                          
Planes
scala> val name: String = p.head                                  
name: String = Planes
Classes with Default Values
scala> class Car(val make: String, var reserved: Boolean = true,
     |           val year: Int = 2015) {
     |   override def toString = s"$year $make, reserved = $reserved"
     | }
defined class Car
scala> val a = new Car("Toyota")                                   
a: Car = 2015 Toyota, reserved = true
scala> val l = new Car("Lexus", year = 2010)                      
l: Car = 2010 Lexus, reserved = true
scala> val p = new Car(reserved = false, make = "Volvo")        
p: Car = 2015 Volvo, reserved = false
Abstract Classes
scala> abstract class Car {
     |   val year: Int
     |   val automatic: Boolean = true
     |   def color: String
     | }
defined class Car
scala> new Car()
<console>:9: error: class Car is abstract; cannot be instantiated
              new Car()
scala> class RedMini(val year: Int) extends Car {
     |   def color = "Red"
     | }
defined class RedMini
scala> val m: Car = new RedMini(2005)
m: Car = RedMini@5f5a33ed
Object
scala> object HtmlUtils {
     |   def removeMarkup(input: String) = {
     |     input
     |       .replaceAll("""</?w[^>]*>""","")
     |       .replaceAll("<.*>","")
     |   }
     | }
defined object HtmlUtils
Traits
scala> trait Person {
     | def walk(): Unit
     | }
defined trait Person
scala> class Student(val name: String) extends Person{
     | def walk(): Unit = { println(s"${name} Just walked") }
     | }
defined class Student
scala> val kyel = new Student("Kyel")
kyel: Student = Student@6e709631
scala> kyel.walk
Kyel Just walked
scala> trait Person {
     | def walk():Unit = { println("Walking")}
     | }
defined trait Person
Pattern Matching
Case keyword on steroids
Algebraic data types
"pattern matching is a way of assigning names to things
(or binding those names to those things), and possibly
breaking down expressions into subexpressions at the
same time"
Allows you to "Pattern" match
-Strings
-Numbers
-Regular Expressions
-Case classes
Pattern Matching
scala> val message = "hello" 
message: String = "hello"
scala> val person1 = Person("Kyel",21)
person1: Person = Person(Kyel,21)
def identifyType(item: Any)  = item match{
          case s:String => "The received type argument is a String"
          case i:Int => "The received type argument is an Int"
          case d:Double => "The received type argument is a Double"
          case _ => "Type Not Supported"
      }
scala> identifyType(message)
res6: String = The Received Argument is a String
scala> identifyType(person1)
res8: String = Type Not Supported
Collections Framework
Lists, Sets, and Map
Has immutable and mutable impl
Has Map, Reduce, and more implementations
Pattern Matching
Support for HOF
Collections Framework
scala> val fruits = List("Apple","Banana","Watermelon")
fruits: List[String] = List(Apple, Banana, Watermelon)
scala> val states = Map(1500 ­>"San Juan", 1690 ­> "Makati", 1300 ­> "Pasig",
 1000 ­> "Quezon City")
states: scala.collection.immutable.Map[Int,String] = Map(1500 ­> San Juan, 1690 ­> Makati, 
1300 ­> Pasig, 1000 ­> Quezon City)
scala> val nums = Set(1,1,2,3,4,5,6,7,8,9,10)
nums: scala.collection.immutable.Set[Int] = Set(5, 10, 1, 6, 9, 2, 7, 3, 8, 4)
Basic Operations
scala> fruits(2)
res2: String = Watermelon
scala> fruits.head
res3: String = Apple
scala> fruits.tail
res4: List[String] = List(Banana, Watermelon)
scala> fruits :+ "Durian"
res12: List[String] = List(Apple, Banana, Watermelon, Durian)
scala> fruits.foreach(x => println(x))
Apple
Banana
Watermelon
scala> for(i <­ 0 until fruits.length) println ( fruits(i) )
Apple
Banana
Watermelon
Reduce Operations
scala> List(4, 5, 6).fold(0)(_ + _)
res2: Int = 15
scala> List(4, 5, 6).foldRight(0)(_ + _)
res10: Int = 15
scala> List(4, 5, 6).reduce(_ + _)
res12: Int = 15
scala> List(4, 5, 6).reduceLeft(_ + _)
res14: Int = 15
List(4, 5, 6).reduceRight(_ + _)
res17: Int = 15
Map Operations
scala> val colors = List("red", "green", "blue")
colors: List[String] = List(red, green, blue)
scala> colors.foreach( (c: String) => println(c) ) 1
red
green
blue
scala> val sizes = colors.map( (c: String) => c.size ) 2
sizes: List[Int] = List(3, 5, 4)
Fold vs Fold/Left/Right
Fold operation returns the same type as the elements
on the list
left/right varieties of each operation support unique
return types
Fold has no order of operations
Left only requires fewer traversals compared to right
Pattern Matching
scala> case class Human(name:String, gender:String)
defined class Human
scala> val human1 = new Human("John","male")
human1: Human = Human(John,male)
scala> val human2 = new Human("Keith","Female")
human2: Human = Human(Keith,Female)
scala> val human3 = new Human("Angela","Female")
human3: Human = Human(Angela,Female)
scala> val humans = List(human1,human2,human3)
humans: List[Human] = List(Human(John,male), Human(Keith,Female), Human(Angela,Female))
scala> humans match {
     | case x if x contains(human3) => "true"
     | }
res5: Boolean = true
Other Resources
Exercises
http://www.scalakata.com/
Community Driven Scala Doc
What is Functiol programming
Scala Collections for the Easily Bored Part 1
Scala Collections for the Easily Bored Part 2
Scala Collections for the Easily Bored Part 3
Fin

More Related Content

What's hot

[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들XpressEngine
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용SK Telecom
 
Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Sematext Group, Inc.
 
Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?Michael Boelen
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptxSigit52
 
Spark And Cassandra: 2 Fast, 2 Furious
Spark And Cassandra: 2 Fast, 2 FuriousSpark And Cassandra: 2 Fast, 2 Furious
Spark And Cassandra: 2 Fast, 2 FuriousJen Aman
 
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우Arawn Park
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기Doyoon Kim
 
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...Altinity Ltd
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache HiveAvkash Chauhan
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with KubernetesSatnam Singh
 
Spark overview
Spark overviewSpark overview
Spark overviewLisa Hua
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & IntroductionLee Trout
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfDaniloQueirozMota
 
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오PgDay.Seoul
 

What's hot (20)

[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2
 
Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?Docker Security: Are Your Containers Tightly Secured to the Ship?
Docker Security: Are Your Containers Tightly Secured to the Ship?
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
Spark And Cassandra: 2 Fast, 2 Furious
Spark And Cassandra: 2 Fast, 2 FuriousSpark And Cassandra: 2 Fast, 2 Furious
Spark And Cassandra: 2 Fast, 2 Furious
 
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Quick introduction to scala
Quick introduction to scalaQuick introduction to scala
Quick introduction to scala
 
20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기20명 규모의 팀에서 Vault 사용하기
20명 규모의 팀에서 Vault 사용하기
 
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...
Size Matters-Best Practices for Trillion Row Datasets on ClickHouse-2202-08-1...
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache Hive
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with Kubernetes
 
Spark overview
Spark overviewSpark overview
Spark overview
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdf
 
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 

Viewers also liked

Scala quick start
Scala quick startScala quick start
Scala quick startSukjin Yun
 
Eric Foster Media Profile and Project Case Studies
Eric Foster Media Profile and Project Case StudiesEric Foster Media Profile and Project Case Studies
Eric Foster Media Profile and Project Case StudiesEric Foster
 
Camo braided basket tutorial
Camo braided basket tutorialCamo braided basket tutorial
Camo braided basket tutorialIrisMcLeod
 
Storage availibility in large scale data centers
Storage availibility in large scale data centersStorage availibility in large scale data centers
Storage availibility in large scale data centersmarybabu10
 
What i will and wont use media work
What i will and wont use media workWhat i will and wont use media work
What i will and wont use media workBassBear1337
 
Enotita 5 vasileia_theou_orama_alliotikis zois
Enotita 5 vasileia_theou_orama_alliotikis zoisEnotita 5 vasileia_theou_orama_alliotikis zois
Enotita 5 vasileia_theou_orama_alliotikis zoisGeorge Karas
 
Prandina_Bars&Restaurants
Prandina_Bars&RestaurantsPrandina_Bars&Restaurants
Prandina_Bars&RestaurantsMarco Andretta
 
correos electronicos
correos electronicoscorreos electronicos
correos electronicosdiego lopez
 
Cara menyembuhkan kulit gatal bersisik
Cara menyembuhkan kulit gatal bersisikCara menyembuhkan kulit gatal bersisik
Cara menyembuhkan kulit gatal bersisikNoval Rohman
 
Discover the benefits of Agile - 2015
Discover the benefits of Agile - 2015Discover the benefits of Agile - 2015
Discover the benefits of Agile - 2015Angelo Kallinikos
 

Viewers also liked (20)

Scala quick start
Scala quick startScala quick start
Scala quick start
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
Bill Kula, APR resume
Bill Kula, APR resumeBill Kula, APR resume
Bill Kula, APR resume
 
Eric Foster Media Profile and Project Case Studies
Eric Foster Media Profile and Project Case StudiesEric Foster Media Profile and Project Case Studies
Eric Foster Media Profile and Project Case Studies
 
Camo braided basket tutorial
Camo braided basket tutorialCamo braided basket tutorial
Camo braided basket tutorial
 
Media evaluation 2
Media evaluation 2Media evaluation 2
Media evaluation 2
 
Storage availibility in large scale data centers
Storage availibility in large scale data centersStorage availibility in large scale data centers
Storage availibility in large scale data centers
 
What i will and wont use media work
What i will and wont use media workWhat i will and wont use media work
What i will and wont use media work
 
Enotita 5 vasileia_theou_orama_alliotikis zois
Enotita 5 vasileia_theou_orama_alliotikis zoisEnotita 5 vasileia_theou_orama_alliotikis zois
Enotita 5 vasileia_theou_orama_alliotikis zois
 
Prandina_Residential
Prandina_ResidentialPrandina_Residential
Prandina_Residential
 
Prandina_Bars&Restaurants
Prandina_Bars&RestaurantsPrandina_Bars&Restaurants
Prandina_Bars&Restaurants
 
Dubai Source
Dubai SourceDubai Source
Dubai Source
 
Sado dolphins
Sado dolphinsSado dolphins
Sado dolphins
 
How may steps maths
How may steps  mathsHow may steps  maths
How may steps maths
 
correos electronicos
correos electronicoscorreos electronicos
correos electronicos
 
Portfolio
PortfolioPortfolio
Portfolio
 
Prandina_Offices
Prandina_OfficesPrandina_Offices
Prandina_Offices
 
Happyland
HappylandHappyland
Happyland
 
Cara menyembuhkan kulit gatal bersisik
Cara menyembuhkan kulit gatal bersisikCara menyembuhkan kulit gatal bersisik
Cara menyembuhkan kulit gatal bersisik
 
Discover the benefits of Agile - 2015
Discover the benefits of Agile - 2015Discover the benefits of Agile - 2015
Discover the benefits of Agile - 2015
 

Similar to Scala in a nutshell

Learn scala and it's componenents learn it
Learn scala and it's componenents learn itLearn scala and it's componenents learn it
Learn scala and it's componenents learn itsiddharth30121
 
Scala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologistScala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologistpmanvi
 
Introduction to Scala JS
Introduction to Scala JSIntroduction to Scala JS
Introduction to Scala JSKnoldus Inc.
 
Introduction to Scala language
Introduction to Scala languageIntroduction to Scala language
Introduction to Scala languageAaqib Pervaiz
 
An Introduction to Scala
An Introduction to ScalaAn Introduction to Scala
An Introduction to ScalaBrent Lemons
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming LanguagePaddy Lock
 
Scala final ppt vinay
Scala final ppt vinayScala final ppt vinay
Scala final ppt vinayViplav Jain
 
Scala for n00bs by a n00b.
Scala for n00bs by a n00b.Scala for n00bs by a n00b.
Scala for n00bs by a n00b.brandongulla
 
Martin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMartin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMarakana Inc.
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSAlberto Paro
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsScala Italy
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsMetaDesign Solutions
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
 
Scala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuScala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuHavoc Pennington
 
A Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaA Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaDerek Chen-Becker
 
Introduction to scala for a c programmer
Introduction to scala for a c programmerIntroduction to scala for a c programmer
Introduction to scala for a c programmerGirish Kumar A L
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapDave Orme
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNIntroducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNManish Pandit
 

Similar to Scala in a nutshell (20)

Learn scala and it's componenents learn it
Learn scala and it's componenents learn itLearn scala and it's componenents learn it
Learn scala and it's componenents learn it
 
Scala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologistScala and jvm_languages_praveen_technologist
Scala and jvm_languages_praveen_technologist
 
Introduction to Scala JS
Introduction to Scala JSIntroduction to Scala JS
Introduction to Scala JS
 
Introduction to Scala language
Introduction to Scala languageIntroduction to Scala language
Introduction to Scala language
 
An Introduction to Scala
An Introduction to ScalaAn Introduction to Scala
An Introduction to Scala
 
Infographic on Scala Programming Language
Infographic on Scala Programming LanguageInfographic on Scala Programming Language
Infographic on Scala Programming Language
 
Intro to Scala
 Intro to Scala Intro to Scala
Intro to Scala
 
Scala final ppt vinay
Scala final ppt vinayScala final ppt vinay
Scala final ppt vinay
 
Scala for n00bs by a n00b.
Scala for n00bs by a n00b.Scala for n00bs by a n00b.
Scala for n00bs by a n00b.
 
Martin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMartin Odersky: What's next for Scala
Martin Odersky: What's next for Scala
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJS
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.js
 
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign SolutionsTen Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
 
Scala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuScala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on Heroku
 
A Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaA Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to Scala
 
Introduction to scala for a c programmer
Introduction to scala for a c programmerIntroduction to scala for a c programmer
Introduction to scala for a c programmer
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 Recap
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGNIntroducing Scala to your Ruby/Java Shop : My experiences at IGN
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
 
Scala presentationjune112011
Scala presentationjune112011Scala presentationjune112011
Scala presentationjune112011
 

Recently uploaded

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Scala in a nutshell