Scala, une rapide introduction

Scala c’est beau et ca fait du bien !

Comme disait un ancien collègue : « quand il n’y a pas de code, il n’y a pas de bug ». Avec Scala justement, on écrit bien moins de code qu’en Java, et donc j’imagine moins de bugs. Quelques rapides exemples pour illustrer le propos d’un développeur Java charmé par ce langage :

Concision

Voici comment déclarer une classe avec deux attributs immutables et des contraintes sur ceux ci :


class GrassField(val width: Int, val height: Int) {
    require(width > 0 && height > 0, "Width and Height must be postive integers")
    override def toString = "Field(" + width + "," + height + ")";
}

Lire la première ligne d’un fichier, extraire deux entiers puis itérer sur le reste 2 lignes par 2 lignes :


val lines = Source.fromFile(file).getLines().toTraversable
val fieldDimensions = lines.head.split(' ') map (_.toInt)
val field = new GrassField(fieldDimensions(0),fieldDimensions(1))
lines.tail.toIterator.sliding(2, 2).foreach {...}

Pattern Matching

Processing d’une chaine de caractère lettre par lettre :

seq.toCharArray.foreach {
_ match {
    case 'A' => {...}
    case 'G' => {...}
    case 'D' => {...}
    case _ => throw new IllegalArgumentException("Invalid instruction, must be either 'A', 'G', 'D'")
}

Acteurs

Pour parallèliser l’éxécution d’une méthode sur chacun des éléments d’une liste :

val caller = self
listToProcess foreach (i => {
    actor {
        caller ! longComputationMethod(i)
    }
})
val results = ("" /: (0 until listToProcess.length)) { (partialResult, i) =>
    receive {
        case r:String => {
            partialResult + ", " + i
        }
    }
}

Conclusion

Ca fait drôle au début mais plus on code avec Scala plus on a envie de coder  : au début c’est un peu difficile, mais après cela s’avère être un bon stimulant neuronal. Ce très rapide billet est un aperçu des fonctionnalités du langage. Je reviendrai dessus à mesure que je descendrai dans du code plus élaboré dans un prochain article. En attendant je vous conseille l’excellent PDF ‘Scala For the Impatient‘ de Cay Horstmann distribué gracieusement par TypeSafe.

Advertisements

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :