Académique Documents
Professionnel Documents
Culture Documents
Mr DIATTARA Ibrahima
2. Déclaration
3. Interpolation
5. List &Array
6. Pattern matching
8. Lambda Expression
10. Implicite
Apache Zeppelin
http://mirrors.standaloneinstaller.com/apache/zeppelin/zeppelin-0.9.0-preview1/zeppelin-0.9.0-
preview1-bin-netinst.tgz
IntelliJ IDEA
https://www.jetbrains.com/help/idea/installation-guide.html#
❑ Lazy (lazy est toujours accompagné de val ): pour faire de l évaluation paresseuse , maintenir
l'évaluation d'une expression jusqu'à ce que sa valeur soit nécessaire=> optimisation
L’ interpolation consiste d'incorporer des références de variables et de les évaluer directement dans une
chaîne de caractère
s
println( "ça va mister $name ?")
val a=10
val b=5
println(" la valeur de a+b est "+a+b+5) ????
s
println( " la valeur de a+b est ${a+b+5} ") ?????
❑ Méthode
def affiche(value : Int) : Unit = {
print(s"la valeur est $value")
}
Pour voir les opérations CRUD des listes ou tab voici le lien
https://www.tutorialspoint.com/scala/scala_lists.htm
Le pattern matching de Scala possède un cas d’utilisation qui est similaire aux switch-case de Java et de C
❑ Reduce
l.reduce((a, b) => a + b)
mat.map(e=>e.reduce((a, b)=>a+b)).reduce((a,b)=>a+b)
mat.flatMap(e=>e).reduce((a,b)=>a+b)
❑ MapReduce & filter
l.map(e=>e*2).filter(e=>e+1>=3).reduce((a,b)=>a+b)
l.map(e=>e*2).filter(_>3).reduce((a,b)=>a+b)
l.filter(_==1).length ou l.filter(e=>e==1).length
!!!!!!! Pour les lambda expression limitez vous sur les fonctions filter, map, flatMap, reduce et length
❑ Le code fonctionnel reflète bien les deux étapes de calcul : filtrer l’élément puis compter, alors que le code impératif fait
tout en même temps
❑ La programmation fonctionnelle s'affranchit de façon radicale des effets secondaires (effets de bord) en interdisant toute
opération d'affectation, on constate aussi qu’elle est moins verbeuse
Classe: est un modèle de définition pour des objets ayant le même ensemble d'attributs, et le même ensemble
d'opérations
En scala nous avons 2 types de class , les class simples et les case class
L’utilisation des implicits permet aux développeurs de se faciliter la tâche en laissant le compilateur le
soin d’aller chercher dans le scoop ce qui manque
❑ Passage explicite
salam("Helo")("diop",28)
❑ Passage implicite
salam("Hello")
Il est impossible d’avoir deux variables ou constantes implicites de même type dans un scoop
=> Impossible d’avoir deux variables ou constantes implicites de même type dans une fonction ou méthode
getAgeDans(10, )s
// error
Il est impossible d’avoir deux méthodes/fonctions implicites de même signature dans un même scoop
❑ Une classe abstraite est une class dont l'implémentation n'est pas complète et qui n'est pas instanciable,
❖ Factoriser le code
val ordi1=new Ordinateur(" HP " ) with Traitement1 val ordi2=new Ordinateur(" HP " ) withTraitement2
ordi.action
case class(..) case class(..) si la class à hérité n est pas une class trait
class simple class simple
trait trait
class abstract class abstract
trait T1; trait T2 ; trait T3 | abstract class Abs| class C1 | case class C2(..)
class C extends Abs1 with C2 => error
class C extends Abs1 with T1 with T2 with T2 => ok
Le langage Scala ne permet pas de définir des méthodes ou des attributs statiques dans une classe, pour faire cela, il faut
utiliser un type de classe particulier qui est instancié par défaut et ne peut être réinstancié. Scala utilise le nom de
«singleton object» pour définir ce type de classe. La définition d'un singleton object est similaire à la définition d'une
classe, sauf qu'il faut utiliser le mot-clé «object» à la place du mot-clé «class»