Cette présentation aura pour objectif d’introduire le langage de programmation Scala. Ce dernier bénéficie depuis plusieurs mois d’un véritable engouement qui se reflète au regard de la communauté française croissante.
Pour cela Ludwine Probst et Florent Lagrede reviendront donc sur les notions fondamentales, illustrées d’exemples sur des problèmes récurrents de programmation, afin de dégager les spécificités de ce langage et certains de ses atouts.
Aucune connaissance de Scala n’est donc nécessaire, seulement l’envie de découvrir un nouveau langage.
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
C'est la troisième partie du cours Business Intelligence et Data warehouse.
Si vous avez des questions, des remarques ou des propositions, n'hésitez pas de me les envoyer via mon email:
pr.azizdarouichi@gmail.com.
Bonne lecture
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like depression and anxiety.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
BigData_TP1: Initiation à Hadoop et Map-ReduceLilia Sfaxi
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
C'est la troisième partie du cours Business Intelligence et Data warehouse.
Si vous avez des questions, des remarques ou des propositions, n'hésitez pas de me les envoyer via mon email:
pr.azizdarouichi@gmail.com.
Bonne lecture
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like depression and anxiety.
The document discusses equipment testing. It likely provides details on procedures for testing various equipment to ensure proper functioning and identify any issues. The goal is to have a process in place to systematically evaluate equipment performance on a regular basis.
Pour mieux vendre ou acheter vos matériels informatiques, de télécommunications et mobiliers de bureau.
Pourquoi ce nouvel espace " Petites Annonces " ?
De nombreux gestionnaires de parcs informatiques, télécoms et mobiliers de bureau en entreprises, cherchent à acheter, vendre ou donner des lots d’équipements, matériels et meubles de bureau professionnels.
Pour répondre à ces nombreuses demandes, nous avons décidés de mettre à la disposition ce nouvel espace dédié.
Publiez !!! Consultez !!!
Vous pouvez maintenant publier, modifier, simplement et rapidement, des annonces pour vendre, acheter ou donner les matériels et équipements informatiques, télécoms et mobiliers de bureau de leur entreprise.
Les annonces sont contrôlées et dé-personnalisées, puis, publiées sur notre site et diffusées sur internet (RSS, Blog, Réseaux sociaux Pro,...).
Sur des critères de volume et spécificités, certaines seront sélectionnées pour être traitées et suivies par l'un de nos commerciaux / Broker.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise boosts blood flow and levels of neurotransmitters and endorphins which elevate and stabilize mood.
Swift est désormais open source ! "Google considérerait Swift comme un langage « de première classe » pour Android" pouvait-on lire en avril sur le réseau. Et enfin un portage Android du langage a été "merge" dans la base de code officielle de Swift.
Bon tout ceci est un bon prétexte pour apprendre ce nouveau langage et les possibilités qu'il peut nous apporter en terme de développement. Une comparaison avec Java sera notamment proposée afin de montrer les similitudes et differences entre ces deux langages .
Du 7 au 9 mai aura lieu la conférence Microsoft //Build, LA conférence des développeurs Microsoft.
A peine le temps de digérer les nombreuses sessions proposées par Microsoft que nos MVP vous présentent une synthèse des principales annonces.
L’« entreprise libérée », buzzword du moment, fait couler beaucoup d’encre ces dernières années. Libérée ? De qui, de quoi ? Mais que cache cette expression ?
Nous retracerons l’évolution de l’organisation des hommes et du management, pour s’intéresser à cette nouvelle forme d’organisation qui remet l’humain au centre de l’entreprise.
Quelles sont les caractéristiques de celle-ci ? Quelles pratiques diffèrent des entreprises classiques ? Et surtout comment faire pour devenir une entreprise libérée et pour quels bénéfices ?
Que vous soyez développeurs, managers, chefs de projet, Scrum Master, RH, commerciaux ou dirigeants, je vous invite à découvrir ce nouveau paradigme d’organisation et de management, qui veut réconcilier deux concepts a priori incompatibles : Bonheur et Travail. Alors, info ou intox ?
Amélioration continue, c'est l'affaire de tous !SOAT
Popularisée par Toyota dans les années 50, est au cœur du processus Agile. L’idée majeure est de se dire qu’il y a toujours moyen, quel que soit le processus utilisé, de le rendre plus performant. Tout processus, aussi optimal soit-il, s’inscrit dans un contexte évolutif et perd donc de son efficacité avec le temps s’il n’est pas continuellement revu ou amélioré.
Reste que dans l’univers informatique, on a trop souvent tendance à cantonner cette démarche aux seules équipes de développement alors qu’elle peut être élargie à toutes les fonctions stratégiques d’une organisation. Nous allons voir lors de cette conférence, comment élargir cette approche en y impliquant toutes les étapes d’un projet et en travaillant sur les interactions entre ses différents acteurs.
L’amélioration continue ne pouvant se réduire à une maîtrise optimisée des processus, nous verrons dans quelle mesure elle induit également une nouvelle politique de partage des connaissances pour faire émerger une véritable « intelligence collective ».
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
La sortie de Java 8 est une véritable révolution dont l’enjeu dépasse de loin la simple évolution d’un langage et de ses APIs. Rdv sur notre chaîne Youtube pour revoir la conférence :
Après une version 7 peu convaincante, la version 8 replace Java au premier rang des langages objets actuels.
En parfaite adéquation avec les besoins des projets et les possibilités offertes par les environnements matériels actuels, cette nouvelle version apporte une modernisation du langage et de ses API, un suivi des performances des processeurs et des améliorations de la JVM.
Quels sont les nouveaux concepts introduits par Java 8 ? En quoi les expressions lambdas et l’API Stream représentent une avancée majeure de la plateforme ? Quelle stratégie adopter pour migrer vers Java 8 en toute sécurité et en diminuant au maximum sa dette technique ?
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
Les systèmes distribués ont largement évolués ces 10 dernières années, passant d’énormes applications monolithiques à de petits containers de services, apportant plus de souplesse et d’agilité au sein des systèmes d’information.
Le terme « Architecture microservice » a vu le jour pour décrire cette manière particulière de concevoir des applications logicielles.
Bien qu’il n’y ait pas de définition précise de ce style d’architecture, elles ont un certain nombre de caractéristiques communes basées autour de l’organisation de l’entreprise, du déploiement automatisé et de la décentralisation du contrôle du langage et des données.
Seulement, développer ces systèmes peut tourner au véritable casse-tête. Je vous propose donc un tour des concepts et différentes caractéristiques de ce type d’architecture, des bonnes et mauvaises pratiques, de la création jusqu’au déploiement des applications.
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
Allez plus Loin avec CDI
En moins de 5 ans d’existence, Contexts and Dependency Injection (CDI) est devenue l’une des principale spécification de Java EE. Néanmoins, CDI est bien souvent perçu comme une simple solution d’injection de dépendance enrichie alors que cette spécification est bien plus riche que ça. Lors de cette présentation, après un rapide rappel des fonctionnalités de base de CDI, nous montrerons comment son utilisation avancée permet Java EE en intégrant des technologies legacy ou plus récent de manière naturelle. Nous finirons avec le travail en cours sur CDI 2.0 qui a commencé début septembre.
1/3 : introduction to CDI - Antoine Sabot-DurandSOAT
Allez plus Loin avec CDI
En moins de 5 ans d’existence, Contexts and Dependency Injection (CDI) est devenue l’une des principale spécification de Java EE. Néanmoins, CDI est bien souvent perçu comme une simple solution d’injection de dépendance enrichie alors que cette spécification est bien plus riche que ça. Lors de cette présentation, après un rapide rappel des fonctionnalités de base de CDI, nous montrerons comment son utilisation avancée permet Java EE en intégrant des technologies legacy ou plus récent de manière naturelle. Nous finirons avec le travail en cours sur CDI 2.0 qui a commencé début septembre.
Allez plus Loin avec CDI
En moins de 5 ans d’existence, Contexts and Dependency Injection (CDI) est devenue l’une des principale spécification de Java EE. Néanmoins, CDI est bien souvent perçu comme une simple solution d’injection de dépendance enrichie alors que cette spécification est bien plus riche que ça. Lors de cette présentation, après un rapide rappel des fonctionnalités de base de CDI, nous montrerons comment son utilisation avancée permet Java EE en intégrant des technologies legacy ou plus récent de manière naturelle. Nous finirons avec le travail en cours sur CDI 2.0 qui a commencé début septembre.
Javascript s’est depuis longtemps imposé comme le principal langage pour développer des écrans web dynamiques. L'émergence des SPA (Single Page Application) est en fait l'aboutissement logique du succès de ces outils au premier rang desquels on compte jQuery et AJAX.
AngularJS fait partie d’une nouvelle génération de frameworks qui propose d’aller plus loin afin d’avoir non seulement des SPA améliorant l’expérience utilisateur mais aussi un code mieux organisé, plus modulaire et donc facilement testable.
Au cours de cette soirée, vous verrez d’abord la manière dont AngularJS étend le HTML à travers les directives puis le binding bidirectionnel, ensuite, la programmation asynchrone avec AngularJS. Enfin pour finir, nous allons voir ces petits plus qui expliquent la popularité du framework : les filtres, l’injection de dépendance et les tests.
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014SOAT
Les applications sont de plus en plus interconnectées. Une architecture type WOA (Web Oriented Archiecture) et l’utilisation des micros-services nécessitent de faire de plus en plus appel à différents services web.
Comment composer un résultat à partir de ces différents services, sans avoir à ce soucier de l’ordre dans lequel les serveurs vont répondre ?
RxJava offre une manière élégante de faire de l’asynchrone et de la composition au sein de son application. David vous exposera les concepts de Rx (Reactive eXtension) avant de vous montrer une mise en application avec des exemples de code venant d’une application Android.
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
Plus de 50% des internautes français utilisent un support mobile pour naviguer sur le web. Il est donc temps de repenser votre stratégie mobile et le Responsive Web Design, consistant à ne faire qu’un seul site adapté au périphérique qui l’affiche, constitue une approche possible.
Après une introduction à ses principes, nous verrons qu’au-delà des défis techniques, le RWD suppose de revoir entièrement le processus de développement d’un site web et les méthodes de travail des équipes, que ce soit en phase de conception ou lors des tests.
Cette conférence sera l’occasion de découvrir les nouveaux challenges à relever par vos équipes lors de la conception de vos prochains sites internet.
Nio sur Netty par Mouhcine Moulou - 3 avril 2014SOAT
La vidéo de cette conférence est visible ici : http://youtu.be/T7r7UlSoe7k
La croissance continue du Web a accru la nécessité pour les applications Client/serveur de gérer la monté en charge et la performance. Heureusement, Java est livré avec les outils nécessaires pour créer des applications performantes, et scalables ! Les premières versions de Java incluent le support des communications réseau avec la jdk 1.4 qui a introduit l'API NIO. La nouvelle version, NIO 2, introduite dans Java 7, a été conçue pour permettre l'écriture asynchrone en réseau, Aujourd'hui, encore peu de gens s'intéressent au développement d'applications réseaux, car l'API Jdk reste complexe.
Netty est une bibliothèque Java pour l'écriture d'applications et de services réseau hautement concurrent et scalable. Netty est une API complétement asynchrone : l'Api vous propose une nouvelle façon de développer vos applications réseau en assurant un découplage entre votre logique métier et les traitements réseau grâce à son modèle basé sur une architecture "event-driven".
Dans cette conférence, vous comprendrez l'architecture de Netty, et comment des entreprises comme Twitter, Facebook, RedHat et autres l'utilisent pour répondre à leurs problématiques de communication réseau.
- le niveau : développeurs Java débutants et expérimentés
- la durée : 2h
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
Développer des applications iOS et Android avec C# grâce à Xamarin par Cyril Cathala
A l’ère des smartphones et tablettes, le développement multiplateforme se révèle être un challenge : quelle solution choisir et comment minimiser les coûts, tout en optimisant l’expérience utilisateur ?
Parmi les solutions disponibles sur le marché, Xamarin s’adresse aux développeurs C# pour la création d’applications compatibles avec Windows 8, iOS et Android. Son approche multiplateforme permet de développer des applications natives de qualité en mutualisant jusqu’à 75% de code entre les différents OS.
Ce petit déjeuner sera l’occasion de faire un tour d’horizon des outils du marché, d’apprécier toutes les possibilités offertes par Xamarin et d’en explorer les pistes pour aller plus loin.
Amazon Web Service par Bertrand Lehurt - 11 mars 2014SOAT
Attention, soirée spécial cloud computing!
IAAS, PASS, SAAS... Perdu avec autant d'acronyme qui représente des types de cloud computing?
Ça tombe bien, Bertrand Lehurt vous propose une soirée d'introduction à l'IAAS (Infrastructure As A Service) avec Amazon Web Services, suivi d'une séance les mains dans le cambouis.
Vous allez apprendre à déployer une petite application en utilisant les services nécessaires dans la jungle de ceux proposés (plus de 37). Au cours de la soirée, nous aborderons donc l'utilisation d'EC2, S3, ELB, EBS, Cloudfront et Auto scaling et les architectures types qui sont utilisées dans le cloud computing.
La vidéo de la présentation est visible ici : http://youtu.be/0AUJ_hcMNhQ
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
HTTP est un protocole simple à comprendre, simple à utiliser et c’est cette simplicité qui le rend disponible sur un grand nombre de plate-forme. REST, de son côté, est un style d’architecture qui permet d’exposer facilement une API en utilisant HTTP et différents types de représentations de données tels que JSON ou XML.
ASP.NET Web API est une évolution de WCF pour écrire une couche d’API REST, en utilisant un modèle de programmation proche d’ASP.NET MVC. Cette soirée 3T sera l’occasion pour vous de découvrir les fonctionnalités offertes par ASP.NET Web API qui font que c’est une technologie qu’il faut envisager d’utiliser lorsque vous devez créer une API REST.
Xamarin et le développement natif d’applications Android, iOS et Windows en C#SOAT
Une mise à jour de cette présentation est disponible ici : http://fr.slideshare.net/soatexpert/dvelopper-des-applications-i-os-et-android-avec-c-grce-xamarin
*********************
Les slides de la conférence présentée par Cyril Cathala chez Soat le 04/03/2014 sur le thème : Xamarin et le développement natif d’applications Android, iOS et Windows en C#
La vidéo de la présentation est visible ici : http://youtu.be/0BF9NqLYNvQ
MongoDB : la base NoSQL qui réinvente la gestion de données
Introduction à scala
1. Introduction à
Scala
Introduction à Scala par Ludwine et Florent
2. Florent Lagrède
développeur Java chez voyages-sncf.com
@flowlag
Ludwine Probst
développeuse Java chez voyages-sncf.com
DuchessFr et GDG member
@nivdul
3. Plan de la soirée
Introduction à Scala...
Partie 1
Généralités
Partie 2
Présentation des concepts
Partie 3
Démonstration avec une appli
4. Histoire
Nom : scala vient de "scalable langage"
Auteur: Martin Odersky
Création : 2003
Lieu : EPFL (Lausanne)
But : être élégant et concis, mais pas que...
5. Dans la communauté
PSUG (Paris Scala User Group)
• soirée chaque mois avec 60-100 membres
• sujets techniques, retours d'expériences,
présentations de projets open-source...
6. Scala en quelques mots
• langage mélangeant programmation orientée-
objet et fonctionnelle
• tourne sur la JVM
• compatible avec les librairies Java
• statiquement typé
• soucis de la concurrence (immutable)
• inférence de type
• tout est objet (hiérarchie des classes)
• et ça se veut être concis
7. // en Java
class Album {
private int id;
private String name;
public Album(int id, String name) {
this.id = id;
this.name = name;
}
}
// en Scala
class Album(id: Int, name: String)
8. La programmation fonctionnelle
• exprime les fonctions au sens mathématique
• exclut le changement d'état lors de l'évaluation
de fonctions
• élimine les effets de bords
• s'oppose à la programmation impérative
10. Quelques outils pour coder en Scala
• REPL (Read-Evaluate-Print Loop)
• sbt (simple-build-tool)
• éditeur de texte
(sublimtext,notepad++...)
• Eclipse/IntelliJ
http://typesafe.com/stack/downloads/scala-ide
• scaladoc http://www.scala-lang.org/
11. Démo
• création d'un projet scala via Eclipse
• utilisation du worksheet
• petits tests en scala via le REPL
• compilation/exécution (tests) d'un projet via sbt
12. Objectifs de la soirée
• présenter les bases, du moins certaines
o mutable/immutable, trait, case class, sealed,
List, high order function, pattern matching...
o voir la syntaxe
• regarder de près une appli en Scala
15. Les classes
Définition :
• définition standard
• pas de mot clé public
• un fichier source peut contenir plusieurs classes
et elles sont toutes par défaut public
16. Les case classes
Définition :
• objet non modifiable après instanciation
• méthodes equals, toString, hashcode...
implicitées
• constructeur implicité
• pas de new
• peut se décomposer avec la notion de Pattern
Matching
17. Exemples
case class Album(id:Int, name:String)
Ces 3 écritures suivantes sont équivalentes :
val album = new Album(3, "Paris")
val album = Album(3, "Paris")
val album = Album.apply(3, "Paris")
album.name = qu'obtient-on???
18. Les getters/setters (1/2)
//Java
public class Image() {
private String name;
public String getName() {...}
public void setName(String name) {...}
}
//Scala
class Image(var name:String)
19. Les getters/setters (2/2)
En scala,
• les getters/setters sont générés pour la JVM
• on peut les surcharger
• ils sont privés si l'attribut est privé
• il est possible d'empêcher leur génération avec
la syntaxe suivante
private[this] name:String
20. Val & Var
Définition :
• val
o déclaration d'attribut : variable non
modifiable
o déclaration de paramètre de classe : getter
implicite
• var
o déclaration d'attribut : variable modifiable
o déclaration de paramètre de classe : getter et
setter implicite
21. Exemples
class Image(var name: String)
val imageA = new Image("MyImageA")
val imageB = new Image("MyImageB")
Si on écrit ça :
imageA = imageB
Que se passe-t-il ?
22. Les traits
Définition :
c'est comme une class sauf qu'il y a le mot-clé
trait. C'est l'équivalent de l'interface en Java sauf
qu'on peut y implémenter des méthodes.
trait ImageInfos {
val image:Image
def ImageInfos:String = image.name
}
23. Exemples
Possibilité d'un héritage multiple :
trait ComputeAverageScore
trait AnotherOne
class Image extends ImageInfos with
ComputeAverageScore with AnotherOne {
val name = "Paris"
}
Pas de paramètres de 'classe' :
trait ImageInfos(image: Image) // ne
compile pas
24. Les Collections
• Utilise le trait Iterable
• Immutable par défaut
• Fonctions d'ordre supérieure
o map
o filter
o foreach
Exemples de collection :
List, Map, Set, Vector...
25. Les Lists
Définition :
La classe List repose sur les deux case classes :
• Nil représente une liste vide
• :: (se prononce “cons”),
où x::xs représente la liste dont le premier
élément est x, suivi du reste des éléments xs.
26. Les Lists
Les 3 fonctions clé à retenir :
• head : renvoie le premier élément d’une liste
• tail : renvoie la liste excepté son premier
élément
• isEmpty : renvoie true si la liste est vide,
false sinon
27. Quelques exemples...
val scores = List(1,2,3)val names =
List(“a”,“b”, “b”)
val list =
List(List(1,0),List(1,1),List(0,1))
val empty: List[Nothing] = List( )
val scores = 1 :: 2 :: 3 :: Nil
val names = “a” :: (“b” :: (“b” :: Nil))
28. Fonction partielle
Définition :
• une fonction partielle qui s'exécute ou non en
fonction de ses paramètres
• elle doit obligatoirement définir 2 méthodes
o isDefinedAt (condition d'exécution)
o Apply (code exécuté)
29. Fonction partiellement appliquée
Définition :
• fonction à laquelle on n'applique pas tous les
arguments, créant ainsi une autre fonction.
• peut appliquer aucun ou tous les arguments
d'une fonction
30. Les fonctions de plus haut niveau
• Expression lambda
o x: Int => x + 1 est équivalent à
f(x: Int) = {x + 1}
• Peut prendre une autre fonction en paramètre
• Peut être retournée en tant que résultat
• Peut être déclarée à l'intérieur d'une autre fonction
• Peut-être stockée dans une variable
Exemples :
map, filter, flatten, flatmap...
32. Les options (2/2)
L'intérêt des Options ?
Imaginons que l’on veuille trouver une
personne dans une BDD...
def findImage(id: Int): Option[Image]
33. Pattern Matching
Définition :
Le pattern matching peut être assimilé au switch
case d'autres langages comme Java.
e match {case p1 => e1 ... case pn => en }
pi représente les patterns et ei la valeur renvoyée
dans le cas où le pattern pi match e.
Erreur MatchError renvoyée si besoin.
34. Exemples (1/4)
def applyEvent(event: Event) = event match
{
case AddImage(image) => add(image)
case RemoveImage(withId) =>
remove(withId)
case SearchImages(term) => search(term)
case _ => this.image
}
C'est quoi ce "_" ?
35. Exemples (2/4)
Avec les options :
case SortImages(criteria) => criteria match {
case Some(criteria) => sort(criteria)
case None => this.images
}
36. Exemples (3/4)
On peut faire du Pattern Matching sur un peu tout !
def describe(x: Any) = x match {
case 5 => "five"
case true => "truth"
case "hello" => "hi!"
case Nil => "the empty list"
case _ => "something else"
}
37. Exemples (4/4)
Avec les listes :
def eval(list:List[Int]) = list match {
case Nil => println("vide")
case x::Nil => println("un seul élément")
case x::xs => println("au moins 2 élemts")
}
38. Sealed Trait
Définition : le mot-clé sealed devant un
trait :
ça facilite le Pattern Matching !
Exemple :
sealed trait Criteria
case class ByName extends Criteria
case class ByDate extends Criteria