Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

De Java a Scala: Cómo conocí la programación funcional

Durante gran parte de la universidad y mis primeros años en el mercado laboral, todos mis desarrollos han tenido una cosa en común: Java. A principios de este año me surgió la oportunidad de trabajar con un nuevo lenguaje y un paradigma de programación con una infinidad de posibilidades: Scala.

En esta charla explicaré la sintaxis básica del lenguaje y daré algún ejemplo de como cambia el enfoque entre un código en Java y Scala.

Livres associés

Gratuit avec un essai de 30 jours de Scribd

Tout voir
  • Soyez le premier à commenter

De Java a Scala: Cómo conocí la programación funcional

  1. 1. Ifyouhaveadream,wecanwritethecode De Java a Scala: como conocí la programación funcional
  2. 2. About me: Ifyouhaveadream,wecanwritethecode DarkRodry
  3. 3. Ifyouhaveadream,wecanwritethecode
  4. 4. Ifyouhaveadream,wecanwritethecode
  5. 5. Ifyouhaveadream,wecanwritethecode
  6. 6. Ifyouhaveadream,wecanwritethecode
  7. 7. Ifyouhaveadream,wecanwritethecode
  8. 8. Ifyouhaveadream,wecanwritethecode ● Orientado a objetos ● Funcional ● Compila a Java bytecode ○ funciona sobre la JVM
  9. 9. Ifyouhaveadream,wecanwritethecode object HelloWorld { def main(args: Array[String]) { println("Hello t3chFest!") } }
  10. 10. Ifyouhaveadream,wecanwritethecode
  11. 11. Ifyouhaveadream,wecanwritethecode boolean b = false; int i = 1; float f = 3.5f; char c = 'J'; String s = "hello world"; List <String> list = new ArrayList<>(); var b: Boolean = true var i: Int = 1 var f: Float = 3.5f var c: Char = 'S' var s: String = "hello world" var s: List[String] = List("hello", "world")
  12. 12. Ifyouhaveadream,wecanwritethecode final boolean b = false; final int i = 1; final float f = 3.5f; final char c = 'J'; final String s = "hello world"; List <String> list = new ArrayList<>(); list.add("hello"); list.add("world"); val b: Boolean = true val i: Int = 1 val f: Float = 3.5f val c: Char = 'S' val s: String = "hello world" val s: List[String] = List("hello", "world")
  13. 13. Ifyouhaveadream,wecanwritethecode public class Suit { final String color; final long size; public Suit(String color, long size) { this.color = color; this.size = size; } } case class Suit(color: String, size: Long)
  14. 14. Ifyouhaveadream,wecanwritethecode public String suitUp(Suit suit) { return "My " + suit.color + " suit!"; } def suitUp(suit: Suit): String = { s"My legendary ${suit.color} suit" } val f: Suit => String = suitUp def sayIt(a: String)(b: String): String = { s"$a$b" } val g: String => String => String = sayIt val curry: String => String = sayIt("legen") val quote: String = curry("dary")
  15. 15. Ifyouhaveadream,wecanwritethecode sealed trait Clothes case class Suit(color: String, size: Long) extends Clothes case class Sweater(thickness: Int) extends Clothes case class TShirt(color: String, quote: String) extends Clothes def suitUp(clothes: Clothes): String = clothes match { case Suit(color, _) => s"My legendary $color suit!" case Sweater(_, _) => "Is it your grandmother's?" case _ => "This clothes sucks" }
  16. 16. Ifyouhaveadream,wecanwritethecode public interface Awesomeness { String highFive(); String playLaserTag(); boolean flirt(Girl girl); } trait Awesomeness { def highFive(): String def playLaserTag(): String def flirt(girl: Girl): Boolean }
  17. 17. Ifyouhaveadream,wecanwritethecode trait BroCode[T] { def suitUp(x: T): T def drink(x: T, d: Drink): Drink def acceptChallenge(x: T, f: T => T): T } implicit object BarneyBrocode extends BroCode[Barney] { def suitUp(x: Barney): Barney = x def drink(x: Barney, d: Drink): Drink = d match { case Water() => d case _ => (x, EmptyGlass()) } def acceptChallenge(x: Barney, f: Barney => Barney): Barney = f(x) } implicit object TedBroCode extends BroCode[Ted] { def suitUp(x: Ted): Ted = ElegantTed() def drink(x: Ted, y: Drink): Drink = EmptyGlass() def acceptChallenge(x: Ted, f: Ted => Ted): Ted = f(x) }
  18. 18. Ifyouhaveadream,wecanwritethecode def goToMaclarens[T: BroCode](t: T): T = for { tSuited <- suitUp(t) _ <- drink(tSuited, Beer()) tFinish <- acceptChallenge(tSuited, playLasertag(x)) } yield tFinish val normalDay: Barney = goToMaclarens[Barney](barney) val randomDay: Ted = goToMaclarens[Ted](ted)
  19. 19. Ifyouhaveadream,wecanwritethecode scalaz
  20. 20. Ifyouhaveadream,wecanwritethecode
  21. 21. Ifyouhaveadream,wecanwritethecode ¿Preguntas?
  22. 22. Ifyouhaveadream,wecanwritethecode Enlaces de interés ● Functional Programming in Scala, Paul Chiusano y Rúnar Bjarnason http://amzn.to/2kwXpkj ● Principios de Programación Funcional en Scala, Coursera https://www.coursera.org/learn/progfun1 ● Scala Exercises, 47 Degrees https://www.scala-exercises.org/ ● The Neophyte's Guide to Scala. Daniel Westheide http://danielwestheide.com/scala/neophytes.html ● ScalaMAD Meetup https://www.meetup.com/Scala-Programming-Madrid

    Soyez le premier à commenter

    Identifiez-vous pour voir les commentaires

  • juandemeer

    May. 1, 2017

Durante gran parte de la universidad y mis primeros años en el mercado laboral, todos mis desarrollos han tenido una cosa en común: Java. A principios de este año me surgió la oportunidad de trabajar con un nuevo lenguaje y un paradigma de programación con una infinidad de posibilidades: Scala. En esta charla explicaré la sintaxis básica del lenguaje y daré algún ejemplo de como cambia el enfoque entre un código en Java y Scala.

Vues

Nombre de vues

283

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

11

Actions

Téléchargements

5

Partages

0

Commentaires

0

Mentions J'aime

1

×