Tutoriel Scala

Lire(12956) temps de mise à jour(2022-04-19)

Tutoriel Scala Scala est un langage de programmation multi-paradigmes, conçu pour intégrer diverses fonctionnalités de programmation orientée objet et de programmation fonctionnelle.


Scala est un langage de programmation multi-paradigmes, un langage de programmation similaire à Java. Il est conçu pour implémenter un langage évolutif et intégrer diverses fonctionnalités de programmation orientée objet et de programmation fonctionnelle.

Premier programme Scala

Ce qui suit est un programme Hello World typique écrit en Scala :

Exemple

 object HelloWorld extends App {
   println("Hello, world!")
 }

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'exemple en ligne

ou

Instance

object HelloWorld {
   def main(args: Array[String]) {
     println("Hello, world!")
   }
 }

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne

Veuillez noter en quoi elle est similaire à l'application Hello World de Java. Une différence significative est que la version Scala du programme Hello World ne marque pas la méthode main comme méthode statique via le mot-clé static, mais utilise le mot-clé object pour créer un singleton.

En supposant que le programme est enregistré en tant que fichier HelloWorld.scala, il peut être compilé via la ligne de commande suivante :

> scalac HelloWorld.scala

Pour exécuter :

> scala -classpath . HelloWorld

N'est-ce pas similaire à la compilation et à l'exécution du programme « Hello World » de Java ? En fait, le modèle de compilation et d'exécution de Scala est équivalent à Java, il est donc également compatible avec les outils de construction de Java, tels que Ant.

Vous pouvez également exécuter le programme directement à l'aide de l'interpréteur Scala, en utilisant l'option -i (charger à partir du code du fichier ) et l'option -e (pour exécuter du code supplémentaire, vous devez réellement exécuter la méthode de l'objet HelloWorld) :

> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'

Conseils : Nos tutoriels Scala vous aideront à acquérir les connaissances Scala du débutant au avancé. Si vous avez des questions, veuillez vous rendre sur le site Web PHP chinoisScala Community pour poser vos questions, et des internautes enthousiastes y répondront pour vous.

Fonctionnalités Scala

Paradigmes de programmation pris en charge

  • Fonctionnalités orientées objet

Scala est un langage purement orienté objet, où chaque valeur est un objet. Le type de données et le comportement d'un objet sont décrits par des classes et des traits. Il existe deux manières d’étendre le mécanisme d’abstraction de classe. Une approche est l'héritage de sous-classe et l'autre approche est un mécanisme de mixage flexible. Ces deux approches peuvent éviter les problèmes d'héritage multiple.

  • Programmation fonctionnelle

Scala est aussi un langage fonctionnel, et ses fonctions peuvent également être utilisées comme valeurs. Scala fournit une syntaxe légère pour définir des fonctions anonymes, prend en charge les fonctions d'ordre supérieur, permet l'imbrication de plusieurs niveaux de fonctions et prend en charge le curry. Les classes de cas de Scala et leur correspondance de modèles intégrée sont équivalentes aux types algébriques couramment utilisés dans les langages de programmation fonctionnels.

De plus, les programmeurs peuvent utiliser la correspondance de modèles de Scala pour écrire du code de type expression régulière afin de traiter les données XML. Dans ces situations, les capacités de compréhension de liste sont utiles pour écrire des requêtes basées sur des formules.

Étant donné que la JVM ne prend pas en charge la récursion de queue, Scala ne peut pas prendre entièrement en charge l'optimisation de la récursion de queue. Cependant, le compilateur Scala peut optimiser certaines récursions simples en boucles.

Le code suivant implémente l'algorithme de tri rapide dans un style fonctionnel, qui peut être comparé à l'exemple de tri rapide d'Erlang :

def qsort(list: List[Int]): List[Int] = list match {
  case Nil => Nil
  case pivot :: tail =>
    val(smaller, rest) = tail.partition(_ < pivot)
    qsort(smaller) ::: pivot :: qsort(rest)
}

Typage statique

Scala dispose d'un système de type et d'une vérification au moment de la compilation pour garantir la sécurité et la cohérence des le code . Le système de type prend en charge spécifiquement les caractéristiques suivantes:

  • catégories générales,

  • covariance et contavariance,

  • annotations,

  • Upper et contraintes liées inférieures sur les paramètres de type, les catégories de lambine et abstractions Types en tant que membres d'objet,

  • types composites,

  • spécifiant explicitement les types lors du référencement eux-mêmes,

  • vues,

  • méthodes polymorphes.

Extensibilité

Scala est conçu avec le fait qu'en pratique, le développement d'applications spécifiques à un domaine nécessite souvent des extensions de langage spécifiques à ce domaine. Scala fournit un certain nombre de mécanismes de langage uniques qui facilitent et simplifient l'ajout de nouvelles constructions de langage sous forme de bibliothèques :

  • N'importe quelle méthode peut être utilisée comme opérateur de préfixe ou de suffixe,

  • les fermetures peuvent être automatiquement construites en fonction du type attendu.

L'utilisation combinée des deux fonctionnalités ci-dessus vous permet de définir de nouvelles instructions sans étendre la syntaxe ni utiliser de fonctionnalités de métaprogrammation telles que les macros.

Concurrency

Scala utilise Actor comme modèle de concurrence. Actor est une entité semblable à un fil qui envoie et reçoit des messages via des boîtes aux lettres. Les acteurs peuvent réutiliser les threads, de sorte que des millions d'acteurs peuvent être utilisés dans le programme, alors que les threads ne peuvent en créer que des milliers. Dans les versions postérieures à 2.10, Akka est utilisé comme implémentation par défaut d'Actor. [20] Le code suivant est une implémentation d'EchoServer utilisant le mode Acteur

val echoServer = actor(new Act {
  become {
    case msg => println("echo " + msg)
  }
})
echoServer ! "hi"

Le mode Acteur peut simplifier la programmation simultanée et tirer parti des capacités des processeurs multicœurs.

Ce que couvre ce manuel du didacticiel Scala

Ce didacticiel Scala couvre toutes les connaissances de base et avancées de Scala, y compris la syntaxe de base de Scala, les types de données Scala, les variables Scala, les opérateurs Scala, les fonctions Scala, les chaînes Scala, les classes et les objets Scala. Attendez tous les introduction aux connaissances de base et avancées de Scala.

Conseils : Chaque chapitre de ce tutoriel contient de nombreux exemples Scala. Vous pouvez directement cliquer sur le bouton "Exécuter l'exemple" pour afficher les résultats en ligne. Ces exemples vous aideront à mieux comprendre et utiliser Scala.


Dernier chapitre


Scala 文件 I/O 2016-10-18
Scala 提取器(Extractor) 2016-10-18
Scala 异常处理 2016-10-18
Scala 正则表达式 2016-10-18
Scala 模式匹配 2016-10-18
Scala Trait(特征) 2016-10-18
Scala 类和对象 2016-10-18
Scala Iterator(迭代器) 2016-10-18