24. Inferência de Tipos classTipos{ private vari = 0 private var c = 'X' private var s = "Hello, world!" private var f = 3.1415926535 private var b = true }
25. AtalhosSintáticos Chamada com 1 parâmetropodeomitir () O ponto entre objeto e métodoéopcional conta.deposito 1000 contadeposito 1000
31. Listas e Pattern Matching object Tamanho{ def tam(l: List[Int]): Int = l match { case Nil => 0 case x :: rl => 1 + tam(rl) } def main(args: Array[String]) { val l1 = List(1, 2, 3, 4) println(tam(l1)) } }
32. Case Classes Classes “simples” Úteisparaguardar dados Podemserusadas com pattern matching
33. Case Classes abstract class Ponto case class Ponto2d(x: Int, y: Int) extendsPonto case class Ponto3d(x: Int, y: Int, z: Int) extends Ponto defprocessa(p: Ponto) = p match { case Ponto2d(x, y) => // usa x e y case Ponto3d(x, y, z) => // usa x, y e z }
34. Modelo de Atores Carl Hewitt et al. (MIT, 1973) Atoresisoladosquetrocammensagens Erlang