Desvendando o Sistema de Tipos Do Scala Paulo Jcranky - - PowerPoint PPT Presentation

desvendando o sistema de tipos do scala
SMART_READER_LITE
LIVE PREVIEW

Desvendando o Sistema de Tipos Do Scala Paulo Jcranky - - PowerPoint PPT Presentation

Desvendando o Sistema de Tipos Do Scala Paulo Jcranky Siqueira @ @ Paulo.siqueira gmail.com / jcranky Quem Sou Eu ? Developer ( ) Scala, Java @ JCranky Quem Sou Eu ? Gamer Minecraft E outros Jogos Indie @ JCranky Quem


slide-1
SLIDE 1

Desvendando o Sistema de Tipos Do Scala

Paulo Jcranky Siqueira “ ” Paulo.siqueira gmail.com @ / jcranky @

slide-2
SLIDE 2

JCranky @

Quem Sou Eu?

Developer

Scala, Java ( )

slide-3
SLIDE 3

JCranky @

Quem Sou Eu?

Gamer

Minecraft E outros Jogos Indie

slide-4
SLIDE 4

JCranky @

Quem Sou Eu?

Musician

Wannabe!

slide-5
SLIDE 5

JCranky @

Para quem trabalho

TecSinapse

Dealers de carros LIP Inova

  • e Pesquisa

– çã

slide-6
SLIDE 6

JCranky @

Alvos:

Sistema de Tipos Varios Tipos de … Tipos Inferencia de Tipos Implicits

slide-7
SLIDE 7

JCranky @

Sistema de Tipos

a type system is a collection of rules that assign a property called a type to the various constructs, such as variables, expressions, functions or modules)

– wikipedia

slide-8
SLIDE 8

JCranky @

Sistema de Tipos

Limita o que podemos fazer com os elementos do c digo ó

slide-9
SLIDE 9

JCranky @

Sistema de Tipos

Int

Valores inteiros entre e

  • 2147483648
  • 2147483648
slide-10
SLIDE 10

JCranky @

Sistema de Tipos

String

Conjunto de caracteres

slide-11
SLIDE 11

JCranky @

Sistema de Tipos

Char

Um nico caracter ú

slide-12
SLIDE 12

JCranky @

Sistema de Tipos

JsValue

Qualquer implementacao trait da API de Json do Play ( )

slide-13
SLIDE 13

JCranky @

Sistema de Tipos

JsValue

JsString, JsArray, JsNumber Etc

slide-14
SLIDE 14

JCranky @

Inferencia de Tipos

Primitivos Classes Objetos

slide-15
SLIDE 15

JCranky @

Inferencia de Tipos

Retorno de m todos / é Functions

slide-16
SLIDE 16

JCranky @

Inferencia de Tipos

Alguns casos que N o funcionam ã

slide-17
SLIDE 17

JCranky @

Inferencia de Tipos

Inferencia com Tipos Parametrizados

slide-18
SLIDE 18

JCranky @

Tipos existenciais

Tipos Paramatrizados s o ã

  • brigat rios

ó N o existem Raw Types ã “ ” como em JAva

slide-19
SLIDE 19

JCranky @

Tipos existenciais

Pode ser problema ao integrar com Java

  • ex. subitens
slide-20
SLIDE 20

JCranky @

Inferencia: Boas Pr ticas á

Ajudar o compilador Ajudar nossos amiguinhos Documentar APIs

slide-21
SLIDE 21

JCranky @

Inferencia: Boas Pr ticas á

Qual o tipo do nome? val nome = Some EasyForger (" ")

slide-22
SLIDE 22

JCranky @

Inferencia: Boas Pr ticas á

E em java... N o use raw types ã

slide-23
SLIDE 23

JCranky @

M todos com Tipos é Parametrizados

def foo T param: T [ ]( ) foo File new File [ ]( ())

slide-24
SLIDE 24

JCranky @

M todos com Tipos é Parametrizados

Utilidade limitada por enquanto At vermos é Type Bounds

slide-25
SLIDE 25

JCranky @

Upper Type Bounds

Aceita filhos de ' ' T : Type <

slide-26
SLIDE 26

JCranky @

Upper Type Bounds

jsonprint

slide-27
SLIDE 27

JCranky @

Structural Types

Tipo Estrutural... Oferece a estrutura a ser seguida

slide-28
SLIDE 28

JCranky @

Lower Type Bounds

Aceita Pais de ' ' T : Type >

slide-29
SLIDE 29

JCranky @

Lower Type Bounds

Calculo do tipo da lista resultante: def :: B : A x: B : List B [ > ] ( ) [ ]

slide-30
SLIDE 30

JCranky @

Co / in / Contra

Variance Assunto mala

slide-31
SLIDE 31

JCranky @

Covariance

Relac o de heranca ã Com tipos parametrizados Parametro filho de ' '

slide-32
SLIDE 32

JCranky @

Invariancia

Tipo parametrizado n o ã varia N o existe relac o de ã ã heranca

slide-33
SLIDE 33

JCranky @

ContraVariancia

Tipo parametrizado varia no sentido oposto da heranca Parametro pai de ' '

slide-34
SLIDE 34

JCranky @

Convers es implicitas õ

Ou implicit views “ ”

slide-35
SLIDE 35

JCranky @

Convers es implicitas õ

Em tipos primitivos, todas as linguagens tem Int Long →

slide-36
SLIDE 36

JCranky @

Convers es implicitas õ

Ou o oposto, mas n o ã é implicito Long Int →

slide-37
SLIDE 37

JCranky @

Convers es implicitas õ

Com classes, temos apenas uma mudanca na vis o ã convers o na refer ncia ( ã ê ) JsValue JsString →

slide-38
SLIDE 38

JCranky @

Convers es implicitas õ

Casting subindo a hierarquia sujeito a exception ( ) JsString JsValue →

slide-39
SLIDE 39

JCranky @

Convers es implicitas õ

Contexto: convers es entre õ quaisquer tipos N o autom tico ã é 100% á Mas vai parecer!

slide-40
SLIDE 40

JCranky @

Convers es implicitas õ

  • ex. json
slide-41
SLIDE 41

JCranky @

Convers es implicitas õ

  • Ex. DSL EasyForger

Item / Block / ItemStack

slide-42
SLIDE 42

JCranky @

Convers es implicitas õ

Grande ferramenta para evitar repetic o de c digo ã ó

slide-43
SLIDE 43

JCranky @

Convers es implicitas õ

Grande ferramenta para escrever DSLs e pega erros em ( tempo de compilac o ã )

slide-44
SLIDE 44

JCranky @

Convers es implicitas õ

“Pimp my library” Ex.: Predef + RichInt / StringWarpper etc

slide-45
SLIDE 45

JCranky @

Type Classes

Simplificando: Uma forma de classificar

  • utras classes

E oferecer funcionalidade extra

slide-46
SLIDE 46

JCranky @

Type Classes

Uso de Parametros impl citos í

slide-47
SLIDE 47

JCranky @

Type Classes

Metodo TraversableOnce.sum Classe Numeric

slide-48
SLIDE 48

JCranky @

Itens avancados

Sugest es para quem tem õ Estomado N o vamos ver! p ã =

slide-49
SLIDE 49

JCranky @

Itens avancados

trait CanBuildFrom From, Elem, To [-

  • +

] type projection phantom types path dependent types Lenses Etc ...

slide-50
SLIDE 50

JCranky @

Sugest es de Estudo: õ

Existential Types x Raw Types:

http://typelevel.org/blog/ / / 2015 02 26 /rawtypes.html

slide-51
SLIDE 51

JCranky @

Sugest es de Estudo: õ

Infer ncia de Tipos a Fundo: ê

https://skillsmatter.com/skillscasts / demystifying type inference 5841-

slide-52
SLIDE 52
slide-53
SLIDE 53

JCranky @

Questions ! ?

Throw them at me!

If it pleases you...

slide-54
SLIDE 54

Paulo Jcranky Siqueira “ ” Paulo.siqueira gmail.com @ / jcranky @