class Person(firstName: String, lastName: String)
class Person(firstName: String) {
println("Outer constructor")
def this(firstName: String, lastName: String) {
this(firstName)
println("Inner constructor")
}
def talk() = println("Hi")
}
val bob = new Person("Bob")
val bobTate = new Person("Bob", "Tate")
object Person(firstName: String) {
...
What's the big deal?
Mutable states limit concurrency
A function that can take other functions as a parameter
val list = List("frodo", "samwise", "pippin")
list.foreach(hobbit => println(hobbit))
val hobbits = Set("frodo", "samwise", "pippin")
hobbits.foreach(hobbit => println(hobbit))
val hobbits = Map("frodo" -> "hobbit",
"samwise" -> "hobbit",
"pippin" -> "hobbit")
hobbits.foreach(hobbit => println(hobbit))
list.tail
list.head
list.reverse
list.count
val words = List("peg", "al", "bud", "kelly")
words.count (word => word.size > 2)
words.filter(word => word.size > 2)
words.map (word => word.size)
words.forall(word => word.size > 1)
words.exists(word => word.size > 4)
words.sortWith((s, t) =>
s.charAt(0).toLowerCase < t.charAt(0).toLowerCase)
words.sortWith((s, t) => s.size < t.size)
val list = List(1, 2, 3)
val sum = (0 /: list) {(sum, i) => sum + i}
val sum = list.foldLeft(0)((sum, value) => sum + value)