Bienvenue au tour
Ce tour contient une introduction morceaux par morceaux aux fonctionnalités les plus fréquemment utilisées en Scala. Il est adressé aux novices de Scala.
Ceci est un bref tour du language, non pas un tutoriel complet. Si vous recherchez un guide plus détaillé, il est préférable d’opter pour un livre ou de consulter d’autres ressources.
Qu’est-ce que le Scala ?
Scala est un langage de programmation à multiples paradigmes désigné pour exprimer des motifs de programmation communs de façon concise, élégante et robuste. Il intègre sans problème les fonctionnalités des langages orientés objet et des langages fonctionnels.
Scala est orienté objet
Scala est un langage purement orienté objet dans le sens où toute valeur est un objet. Les types et les comportements de ces objets sont décrits par des classes et des trait traits. Les classes peuvent être étendues à travers des sous-classes et grâce à un système flexible de composition de classes.
Scala est fonctionnel
Scala est également un langage fonctionnel dans le sen où toute fonction est une valeur. Scala propose une syntaxe légère pour définir des fonctions anonymes, supporte des fonctions de haut niveau, autorise les fonctions imbriquées et supporte le currying. Les case class de Scala et leur système intégré de reconnaissance de motifs permettent de construire des types algébriques utilisés dans de nombreux langages de programmation. Les objets singleton fournissent une façon pratique de regrouper des fonctions qui ne sont pas membres d’une classe.
De plus, la notion de reconnaissance de motifs de Scala s’étend naturellement au traitement des données XML avec l’aide des patrons d’expressions régulières, grâce à une extension générale via des objets extracteurs. Dans ce contexte, les for comprehensions sont utiles pour formuler des requêtes. Ces fonctionnalités font de Scala un langage idéal pour développer des applications comme des services Web.
Scala est fortement typé
A la compilation, le système de type expressif de Scala renforce l’utilisation des abstractions d’une manière sécurisée et cohérente. En particulier, ce système de type supporte :
- Les classes génériques
- Les annotations variables
- Les limites de type supérieures and inférieures
- Les classes internes et les membres d’objets de types abstraits
- Les types composés
- Les auto-références explicitement typées
- Les paramètres et les conversions implicites
- Les méthodes polymorphiques
L’inférence de type signifie que l’utilisateur n’est pas obligé d’annoter son code avec des informations redondantes. Rassemblées, toutes ces fonctionnalités fournissent une base solide pour la ré-utilisation sécurisée d’abstractions de programmation et pour une extension sûre au niveau des types de programme.
Scala est extensible
En pratique, le développement d’applications dans un domaine spécifique demande souvent des extensions de langage propre à ce domaine. Scala fournit une combinaison de mécaniques de langage unique qui rend simple l’ajout de nouvelles constructions de langage avec l’importation de nouvelles librairies.
Dans beaucoup de cas, cela peut être fait sans utiliser des outils de méta-programmation, comme les macros. En voici quelques exemples :
- Les classes implicites permettent d’ajouter des méthodes supplémentaires à des types existants.
- L’interpolation de String est extensible par l’utilisateur avec des interpolateurs personnalisés.
Scala interagit
Scala est conçu pour interagir proprement avec le populaire Java Runtime Environment (JRE). En particulier, l’interaction avec le langage de programmation orienté objet le plus populaire du moment, Java, est la plus transparente possible. Les nouvelles fonctionnalités Java comme les SAMs, les lambdas, les annotations, et les classes génériques ont des équivalents directs en Scala.
Il existe des fonctionnalités Scala sans équivalent Java, comme les valeurs par défaut et les paramètres nommés, qui se compilent d’une façon la plus proche de Java possible. Scala possède le même modèle de compilation que Java (compilation séparée, chargement dynamique des classes) et permet d’avoir accès à des milliers de librairies de haute qualité.
Bon tour !
Merci de continuer à la page suivante pour en savoir plus.
Contributors to this page:
Contents
- Introduction
- Basics
- Unified Types
- Classes
- Default Parameter Values
- Named Arguments
- Traits
- Tuples
- Class Composition with Mixins
- Higher-order Functions
- Nested Methods
- Multiple Parameter Lists (Currying)
- Case Classes
- Pattern Matching
- Singleton Objects
- Regular Expression Patterns
- Extractor Objects
- For Comprehensions
- Generic Classes
- Variance
- Upper Type Bounds
- Lower Type Bounds
- Inner Classes
- Abstract Type Members
- Compound Types
- Self-types
- Implicit Parameters
- Implicit Conversions
- Polymorphic Methods
- Type Inference
- Operators
- By-name Parameters
- Annotations
- Packages and Imports
- Package Objects