ScalaCamp Meetup - Coleções em Scala

18
COLEÇÕES ScalaCamp Meetup 03/03/2016 - Curitiba Maurício Fernandes de Castro

Transcript of ScalaCamp Meetup - Coleções em Scala

COLEÇÕESScalaCamp Meetup 03/03/2016 - Curitiba

Maurício Fernandes de Castro

RESUMO

➤ Por que é importante conhecer melhor as coleções

➤ Como Scala trata as coleções

➤ Onde encontrar documentação

➤ A importância de coleções imutáveis

➤ Detalhando um pouco mais os tipos

➤ Operadores

➤ As operações map, flatMap e forEach

➤ Coleções, Options e nulos

SOBRE O SCALACAMP

ScalaCamp é um grupo de desenvolvedores interessados na linguagem Scala, que se

reúne em Curitiba - PR.

Contatos através [email protected]

http://www.meetup.com/pt-BR/Curitiba-ScalaCamp-Meetup/Visite http://scalacamp.com.br/

AS COLEÇÕES SCALA

SCALADOC

ITERATOR

for (result <- sequence1) println(result)

IMUTÁVEIS

IMUTÁVEIS SÃO PREFERIDOS

➤ O objeto companheiro (singleton) de uma interface scala (trait)

➤ Ex.: scala.collection.Map( “chave" -> “valor" )

➤ O singleton Map produz um imutável

➤ Através do método apply

SEQUÊNCIAS IMUTÁVEIS

SEQUÊNCIAS MUTÁVEIS

OPERAÇÕES

val coll1:Seq[Int] = Seq(1, 2)

val res1 = coll1 :+ 3

val res2 = 0 +: coll1

coll1: Seq[Int] = List(1, 2)

res1: Seq[Int] = List(1, 2, 3)

res2: Seq[Int] = List(0, 1, 2)

OPERAÇÕES

val coll2:Set[Int] = Set(1, 2)

val res3 = coll2 + 3

val res4 = coll2 + (3, 4, 5)

coll2: Set[Int] = Set(1, 2)

res3: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

res4: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)

OPERAÇÕES

val res5 = res3 - 3

val res6 = res4 - (3, 4, 5)

val res7 = coll1 ++ coll2

val res8 = coll1 ++: coll2

val res9 = res8 -- coll2

OPERAÇÕES - MAIS EM SCALADOC

MÉTODOS COMUNS

➤ head, last, headOption, lastOption

➤ tail, init

➤ lenght, isEmpty

MÉTODOS COMUNS

➤ map

➤ flatMap

➤ forEach

COLEÇÕES E

NULOSI call it my billion-dollar mistake… At that time, I was designing the first comprehensive type

system for references in an object-oriented language. My goal was to ensure that all use of

references should be absolutely safe, with checking performed automatically by the

compiler. But I couldn’t resist the temptation to put in a null reference, simply because it was

so easy to implement. This has led to innumerable errors, vulnerabilities, and system

crashes, which have probably caused a billion dollars of pain and damage in the last forty

years.

– Tony Hoare, inventor of ALGOL W.

Eu chamo isto o meu erro de bilhões de dólares ... Naquela época, eu estava projetando o

primeiro tipo de sistema abrangente para referências em uma linguagem orientada a

objetos. Meu objetivo era assegurar que todo o uso de referências deve ser absolutamente

seguro, com a verificação realizada automaticamente pelo compilador. Mas eu não pude

resistir à tentação de colocar em uma referência ao null, simplesmente porque era fácil de

implementar. Isto levou a inúmeros erros, vulnerabilidades e falhas no sistema, o que

provavelmente causaram um bilhão de dólares de dor e danos nos últimos quarenta anos.

OBRIGADO!

[email protected]

i-Serv Consultoria Empresarial Ltda.