Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Criando sua própria DSL utilizando expressões lambda em Kotlin

Criando sua própria DSL utilizando expressões lambda em Kotlin

Você sabe o que é uma DSL? Sabe por que elas são úteis? Vamos entender melhor como funcionam as expressões lambda em Kotlin, usando como exemplo algumas funções embutidas na linguagem. Aprenderemos como expressões lambda podem ser utilizadas para a criação de DSLs que facilitam ainda mais o uso da linguagem no seu dia a dia e aumentam a legibilidade e a facilidade de manutenção do seu código. Ao final, teremos um case da Wavy mostrando como a criação de uma DSL simplificou o nosso código.

B90a4fc34b29c2899c160cd7f80ac7db?s=128

Bernardo do Amaral Teodosio

September 15, 2018
Tweet

Transcript

  1. Criando sua própria DSL utilizando expressões lambda em Kotlin Bernardo

    do Amaral Teodosio
  2. Bernardo do Amaral Teodosio Ber / Bers / Berns

  3. Higher Order Functions

  4. Higher Order Functions

  5. Higher Order Functions

  6. Higher Order Functions

  7. Higher Order Functions "Repassar e retornar ações e/ou comportamentos"

  8. Higher Order Functions

  9. Higher Order Functions https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/jvm/runtime/kotlin/jvm/ functions/Functions.kt

  10. Higher Order Functions

  11. Higher Order Functions

  12. Higher Order Functions

  13. Higher Order Functions java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/Function23; … Caused

    by: java.lang.ClassNotFoundException: Didn't find class "kotlin.Function23" ¯\_(ツ)_/¯
  14. Higher Order Functions Mas o que isso quer dizer?

  15. Higher Order Functions Mas o que isso quer dizer?

  16. Extension functions

  17. Extension functions

  18. Dissecando algumas higher order functions da standard library

  19. apply { }

  20. apply { } "Calls the specified function [block] with `this`

    value as its receiver and returns `this` value."
  21. let { } and run { }

  22. Infix functions

  23. Infix functions

  24. Infix functions

  25. Infix functions

  26. DSLs Domain-specific languages "A computer language that's targeted to a

    particular kind of problem, rather than a general purpose language that's aimed at any kind of software problem" - Martin Fowler SQL CSS
  27. Block Builder

  28. Escrevendo uma DSL para o BB

  29. Escrevendo uma DSL para o BB

  30. Escrevendo uma DSL para o BB

  31. Escrevendo uma DSL para o BB

  32. Escrevendo uma DSL para o BB

  33. Escrevendo uma DSL para o BB

  34. Escrevendo uma DSL para o BB

  35. Escrevendo uma DSL para o BB

  36. Escrevendo uma DSL para o BB

  37. Escrevendo uma DSL para o BB

  38. Escrevendo uma DSL para o BB

  39. Escrevendo uma DSL para o BB

  40. Escrevendo uma DSL para o BB

  41. Escrevendo uma DSL para o BB

  42. Escrevendo uma DSL para o BB

  43. None
  44. github.com/berteodosio Bernardo do Amaral Teodosio bernardo.amaral@wavy.global linkedin.com/in/berteodosio Obrigado!