Scala Flashcards

1
Q

Quelles innovations apporte Scala dans le monde de la programmation orienté-objet?

A
  • Composition avec mixins modulaires;
  • Types auto-référencés (self-types);
  • Abstraction de type.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Comment Scala combine-t-il deux paradigmes de programmation opposés en un seul langage de programmation?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

En Scala, quelles sont les deux façons de définir une variable?

A
  • Par ‘val’ -> valeur, assignation unique;

- Par ‘var’ -> variable, assignation multiple.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

En Scala, quelle convention emploie-t-on pour signifier qu’une fonction a des effets de bord?

A

Nous employons “()” après le nom de la fonction, même si ce n’est pas requis.

Ex.: beep au lieu de beep()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

En Scala, qu’est-ce qui est retourné par une fonction lorsque ‘return’ n’est pas spécifié?

A

La fonction Scala retourne la valeur de la dernière expression rencontrée.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

En Scala, quelle est la convention de nommage pour les types paramétrisés?

A

Nous débutons avec A et montons vers Z au besoin. En Java, nous utilisons T, K, V et E.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

En Scala, est-ce qu’un Array est mutable?

A

Oui.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

En Scala, est-ce qu’une List est mutable?

A

Non.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

En Scala, comment appelle-t-on une expression de ce type:

file <- files ?

A

Un générateur, dont le rôle est d’itérer parmi les éléments d’une collection.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Quelles sont les deux formes de for-comprehension en Scala?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qu’est-ce qu’un objet-compagnon en Scala?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Comment déclare-t-on un singleton en Scala?

A

Par le mot-clef ‘object’ (au lieu de ‘class’).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

En Scala, quelle est la seule structure pouvant être utilisée en tant que mixin?

A

Le trait.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce que Scala génère automatiquement pour une case class?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

En Scala, quelle est la façon privilégiée de créer des méthodes d’extension?

A

Par les conversions implicites et les classes implicites.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

En Scala, quel est la classe à la racine du modèle objet?

A

La classe scala.Any est à la racine du modèle objet.

17
Q

Comment l’objet Option est-il utilisé en Scala?

A

Option est un type de collection ne pouvant contenir qu’un seul élément, pouvant représenter une de deux valeurs possible: ‘None’ et ‘Some’.

Une fonction dont la valeur de retour est de type Option indique qu’il est possible qu’aucune valeur ne soit retournée. Elle est l’implémentation Scala du patron de l’objet nul (Null Object pattern).

18
Q

En Scala, par quel côté se font les associations lorsque l’opérateur se termine par ‘:’?

A

Par la droite. Dans tous les autres cas, l’association de fait par la gauche.

19
Q

A quoi servent les fonctions de collection ‘fold’ en Scala?

A

Les fonctions foldLeft et foldRight permettent de faire des opérations binaires sur tous les éléments d’une liste et un résultat initial. Ces fonctions attendent donc en paramètre un résultat initial et une fonction combinant le résultat initial et une valeur de la liste.

La différence entre foldLeft et foldRight, c’est que dans foldLeft, le premier paramètre de la fonction réfère au résultat initial, alors que dans foldRight, c’est le second paramètre qui y réfère.

20
Q

En Scala, quelle méthode doit être implémentée afin qu’un objet puisse être utilisé comme une fonction?

A

La méthode ‘apply’.

21
Q

En Scala, quel opérateur nous permet de composer une fonction à partir de deux autres?

A

L’opérateur ‘compose’.

22
Q

En Scala, quelle type de collection est à privilégier généralement?

A

Le type ‘Vector’ est à privilégier en raison de ses optimisations pour la performance.

23
Q

En Scala, quel type de collection n’accepte pas les doublons?

A

Le ‘Set’.

24
Q

En Scala, qu’est-ce qu’une collection stricte?

A

Une collection stricte est évaluée dès que possible, contrairement aux collections non-strictes (lazy).

25
Q

Quelle est la différence entre une méthode et une fonction en Scala?

A

Contrairement à une fonction, une méthode n’est pas associée à un type.

En Scala, une méthode est associée à un objet, alors qu’une fonction est un objet complet. La méthode est définie par le mot-clé ‘def’ tandis que la fonction est définit par l’opérateur ‘=>’.

26
Q

Qu’est-ce que le SBT?

A

SBT (Simple Build Tool) est un outil pour construire et compiler des projets Java et Scala. Nous pouvons y configurer les projets et leurs dépendances au moyen de DSL ou de code Scala. Le SBT offre aussi des fonctionnalités pour le test et la compilation continue.

27
Q

Par convention, dans quels répertoires SBT recherche-t-il les fichiers à compiler?

A

Dans le répertoire de base, et dans src/main/scala (pour Java: src/main/java).