Scala Flashcards
Quelles innovations apporte Scala dans le monde de la programmation orienté-objet?
- Composition avec mixins modulaires;
- Types auto-référencés (self-types);
- Abstraction de type.
Comment Scala combine-t-il deux paradigmes de programmation opposés en un seul langage de programmation?
En POO, les blocs de construction sont les objets, et dans la programmation fonctionnelle, les blocs de construction sont les fonctions. En Scala, les fonctions sont traitées comme des objets.
En Scala, quelles sont les deux façons de définir une variable?
- Par ‘val’ -> valeur, assignation unique;
- Par ‘var’ -> variable, assignation multiple.
En Scala, quelle convention emploie-t-on pour signifier qu’une fonction a des effets de bord?
Nous employons “()” après le nom de la fonction, même si ce n’est pas requis.
Ex.: beep au lieu de beep()
En Scala, qu’est-ce qui est retourné par une fonction lorsque ‘return’ n’est pas spécifié?
La fonction Scala retourne la valeur de la dernière expression rencontrée.
En Scala, quelle est la convention de nommage pour les types paramétrisés?
Nous débutons avec A et montons vers Z au besoin. En Java, nous utilisons T, K, V et E.
En Scala, est-ce qu’un Array est mutable?
Oui.
En Scala, est-ce qu’une List est mutable?
Non.
En Scala, comment appelle-t-on une expression de ce type:
file <- files ?
Un générateur, dont le rôle est d’itérer parmi les éléments d’une collection.
Quelles sont les deux formes de for-comprehension en Scala?
- La forme impérative, dans laquelle nous spécifions les instructions qui seront exécutées dans la boucle;
- La forme fonctionnelle, dans laquelle nous tendons à travailler avec des valeurs au lieu d’exécuter des instructions. Cette forme retourne une valeur.
Qu’est-ce qu’un objet-compagnon en Scala?
Un objet-compagnon est un objet ayant le même nom qu’une classe ou un trait et qui est défini dans le même fichier que la classe ou le trait associés. Il a accès aux méthodes privées de l’élément associé, à la manière des classes statiques en Java.
Un des usages les plus courant de l’objet-compagnon est la définition de fabriques (factories) pour les classes.
Comment déclare-t-on un singleton en Scala?
Par le mot-clef ‘object’ (au lieu de ‘class’).
En Scala, quelle est la seule structure pouvant être utilisée en tant que mixin?
Le trait.
Qu’est-ce que Scala génère automatiquement pour une case class?
- Accesseurs pour les paramètres;
- Méthodes ‘equals’ et ‘hashCode’;
- Méthode ‘toString’ (retourne le nom de la classe et les valeurs de ses paramètres);
- Méthode ‘copy’;
- Objet-compagnon, avec implémentation des méthodes ‘apply’ et ‘unapply (utilisée pour le pattern matching);
- Implémentation par défaut pour la sérialisation.
En Scala, quelle est la façon privilégiée de créer des méthodes d’extension?
Par les conversions implicites et les classes implicites.