Monday, September 12, 2016

List Example : Cons Operator, Nil & More...

scala> // #81

scala> // 'List' is Immutable Where as 'Array' is Mutable

scala> // For Mutable List, use ListBuffer #83

scala>

scala> /* List Operators
     |      :::  Append 2 lists
     |      ::   Cons Operator : Used to Prepend a New Element to
     |                           an existing List
     |                         : Is Constant Time
     |       :+  / append : Used to append an element to the List
     |                   : Is Linear Time #83
     | */
     | val l1 = List()  //Empty List
l1: List[Nothing] = List()

scala> val l2 = Nil     //Empty List (Can also be indicated by Nil)
l2: scala.collection.immutable.Nil.type = List()

scala> val l3 = List("maths", "english")
l3: List[String] = List(maths, english)

scala> //Using Cons (::) Operator

scala> //Note here '::' is a method of its right operand #85

scala> // Breadcrumb : Operator Associativity

scala> val l4 = "maths1" :: "english1" :: Nil
l4: List[String] = List(maths1, english1)

scala> val l5 = l3 ::: l4
l5: List[String] = List(maths, english, maths1, english1)

scala>

scala>

scala> /*
     | Useful List methods #85
     | */
     | val l1 = List("english", "math", "Science", "History", "Geo")
l1: List[String] = List(english, math, Science, History, Geo)

scala> l1.length
res53: Int = 5

scala> l1.count()
<console>:9: error: not enough arguments for method count: (p: String => Boolean)Int.
Unspecified value parameter p.
              l1.count()
                      ^

scala> l1.count(x => !x.equals("math"))
res55: Int = 4

scala> l1.head
res56: String = english