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 Sou Eu ? Musician Wannabe! @ JCranky
Para quem trabalho TecSinapse Dealers de carros – çã LIP Inova o e Pesquisa @ JCranky
Alvos: Sistema de Tipos … Tipos Varios Tipos de Inferencia de Tipos Implicits @ 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 @ JCranky
Sistema de Tipos Limita o que podemos fazer ó com os elementos do c digo @ JCranky
Sistema de Tipos Int Valores inteiros entre -2147483648 -2147483648 e @ JCranky
Sistema de Tipos String Conjunto de caracteres @ JCranky
Sistema de Tipos Char ú Um nico caracter @ JCranky
Sistema de Tipos JsValue Qualquer implementacao ( ) trait da API de Json do Play @ JCranky
Sistema de Tipos JsValue JsString, JsArray, JsNumber Etc @ JCranky
Inferencia de Tipos Primitivos Classes Objetos @ JCranky
Inferencia de Tipos é Retorno de m todos / Functions @ JCranky
Inferencia de Tipos Alguns casos que ã N o funcionam @ JCranky
Inferencia de Tipos Inferencia com Tipos Parametrizados @ JCranky
Tipos existenciais ã Tipos Paramatrizados s o ó obrigat rios ã “ ” N o existem Raw Types como em JAva @ JCranky
Tipos existenciais Pode ser problema ao integrar com Java ex. subitens @ JCranky
á Inferencia: Boas Pr ticas Ajudar o compilador Ajudar nossos amiguinhos Documentar APIs @ JCranky
á Inferencia: Boas Pr ticas Qual o tipo do nome ? = val nome (" ") Some EasyForger @ JCranky
á Inferencia: Boas Pr ticas E em java... ã N o use raw types @ JCranky
é M todos com Tipos Parametrizados [ ]( ) def foo T param: T [ ]( ()) foo File new File @ JCranky
é M todos com Tipos Parametrizados Utilidade limitada por enquanto é At vermos Type Bounds @ JCranky
Upper Type Bounds ' ' Aceita filhos de < T : Type @ JCranky
Upper Type Bounds jsonprint @ JCranky
Structural Types Tipo Estrutural... Oferece a estrutura a ser seguida @ JCranky
Lower Type Bounds ' ' Aceita Pais de > T : Type @ JCranky
Lower Type Bounds Calculo do tipo da lista resultante: [ > ] ( ) [ ] def :: B : A x: B : List B @ JCranky
Co / in / Contra Variance Assunto mala @ JCranky
Covariance ã Relac o de heranca Com tipos parametrizados ' ' Parametro filho de @ JCranky
Invariancia ã Tipo parametrizado n o varia ã ã N o existe relac o de heranca @ JCranky
ContraVariancia Tipo parametrizado varia no sentido oposto da heranca ' ' Parametro pai de @ JCranky
õ Convers es implicitas “ ” Ou implicit views @ JCranky
õ Convers es implicitas Em tipos primitivos, todas as linguagens tem → Int Long @ JCranky
õ Convers es implicitas ã é Ou o oposto, mas n o implicito → Long Int @ JCranky
õ Convers es implicitas Com classes, temos apenas ã uma mudanca na vis o ( ã ê ) convers o na refer ncia → JsValue JsString @ JCranky
õ Convers es implicitas Casting subindo a hierarquia ( ) sujeito a exception → JsString JsValue @ JCranky
õ Convers es implicitas õ Contexto: convers es entre quaisquer tipos ã é 100% á N o autom tico Mas vai parecer! @ JCranky
õ Convers es implicitas ex. json @ JCranky
õ Convers es implicitas Ex. DSL EasyForger Item / Block / ItemStack @ JCranky
õ Convers es implicitas Grande ferramenta para ã ó evitar repetic o de c digo @ JCranky
õ Convers es implicitas Grande ferramenta para escrever DSLs ( e pega erros em tempo de ã ) compilac o @ JCranky
õ Convers es implicitas “ Pimp my library ” Ex.: Predef + RichInt / StringWarpper etc @ JCranky
Type Classes Simplificando: Uma forma de classificar outras classes E oferecer funcionalidade extra @ JCranky
Type Classes Uso de Parametros í impl citos @ JCranky
Type Classes Metodo TraversableOnce.sum Classe Numeric @ JCranky
Itens avancados õ Sugest es para quem tem Estomado ã = N o vamos ver! p @ JCranky
Itens avancados [- - + ] trait CanBuildFrom From, Elem, To type projection phantom types path dependent types Lenses Etc ... @ JCranky
õ Sugest es de Estudo: Existential Types x Raw Types: 2015 02 26 http://typelevel.org/blog/ / / /rawtypes.html @ JCranky
õ Sugest es de Estudo: ê Infer ncia de Tipos a Fundo: https://skillsmatter.com/skillscasts 5841- - - / demystifying type inference @ JCranky
? Questions ! Throw them at me! If it pleases you... @ JCranky
“ ” Paulo Jcranky Siqueira @ @ Paulo.siqueira gmail.com / jcranky
Recommend
More recommend