Programmation » Scala, closures, scoping etc.
Rappel du message précédent
Scala, closures, scoping etc.
Publié le 09/12/2010 @ 09:20:30,
Par blietaerMais, bon, je ne veux pas rentrer dans un topic troll...
What else?
Et au besoin s'arrêter.
Scala, closures, scoping etc.
Publié le 15/12/2010 @ 12:30:52,
Par sbCe code me rappelle quelque chose du genre:
</snip>
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
</snip>
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
Oui et l'OO est encore meilleur quand il embrasse des techniques de programmation fonctionnelle comme le GC (LISP) et le polymorphisme paramétrique (ML). L'étape suivante est de passer à une syntaxe sympa pour les closures (reportées au JDK 8 d'après les dernières nouvelles) et l'inférence de type (ML) en Java. Sans ça le mieux qu'on puisse faire ressemblerait à http://functionaljava.org/ en passant par des classes anonymes pour les closures mais tu atteins vite les limites de lisibilité quand les types deviennent plus sophistiqués.
Scala est une plateforme idéale pour les curieux qui désirent apprendre comment s'appuyer sur ces techniques pour faire de la programmation déclarative p. ex. en partant de bases propres. Voici un petit exemple de session avec l'interpréteur Scala.
scala> List(1, 2) map (_ + 1)
res0: List[Int] = List(2, 3)
scala> List("World", "Universe") map ("Hello " + _)
res1: List[java.lang.String] = List(Hello World, Hello Universe)
scala> def hello(s:Any) = "Hello " + s.toString
hello: (s: String)java.lang.String
scala> List("World", "Universe") map hello
res2: List[java.lang.String] = List(Hello World, Hello Universe)
scala> List(1, 2, 3, 4) filter (_ % 2 == 0) map hello
res3: List[java.lang.String] = List(Hello 2, Hello 4)
Pour ceux que ça intéresse, il y a une présentation sur Scala demain soir à l'ULB.
http://www.brussels-jug.be/wiki/doku.php?id=events:2010_12_session2.
Sebastien