{"product_id":"139425","title":"Programmation en Scala 4\/e ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPBvo6e2LgFZhAyADjUNIgZgAVkt.png?v=1765074837\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Programmation en Scala 4\/e \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/96640057\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e Scala est un langage qui combine plusieurs techniques fonctionnelles et orientées objet pour créer un langage concis mais expressif, comparable à des langages dynamiques comme Ruby ou Python.\u003cbr\u003e Scala est largement utilisé dans des domaines de pointe tels que le big data et l'apprentissage automatique. \u003cbr\u003eÉcrit par Martin Odersky, le créateur de Scala, ce livre est la bible du langage Scala, expliquant parfaitement ses différents aspects.\u003cbr\u003e\u003cbr\u003e Ce livre aborde la syntaxe de base de Scala, notamment les fonctions, les traits, les conversions implicites et les modules, ainsi que l'utilisation des collections, leur structure interne et la programmation orientée objet et fonctionnelle.\u003cbr\u003e De plus, le contenu de la deuxième édition, qui couvre la programmation concurrente utilisant les futures, les combinaisons avec Java, l'analyse syntaxique et les applications telles que la programmation d'interfaces graphiques, a été révisé et complété, et du contenu sur l'interpolation de chaînes, les types génériques et le cadre de collection révisé a été ajouté pour correspondre à la dernière version.\u003cbr\u003e En suivant les étapes une à une, vous pouvez devenir un développeur Scala compétent et, en même temps, apprendre à intégrer naturellement différents paradigmes de programmation dans un seul langage et à utiliser chacun d'eux de manière appropriée.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e  \u003cli\u003eVous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Chapitre 1.\u003cbr\u003e Langage extensible\u003cbr\u003e 1.1 Le langage qui se développe dans votre esprit\u003cbr\u003e 1.2 Pourquoi Scala est extensible\u003cbr\u003e 1.3 Pourquoi Scala ?\u003cbr\u003e 1.4 Racines de Scala\u003cbr\u003e 1.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 2.\u003cbr\u003e Premiers pas en Scala\u003cbr\u003e 2.1 Étape 1 : Apprendre à utiliser l’interpréteur Scala\u003cbr\u003e 2.2 Étape 2 : Définissons les variables\u003cbr\u003e 2.3 Étape 3 : Définissons une fonction\u003cbr\u003e 2.4 Étape 4 : Écrivons un script Scala\u003cbr\u003e 2.5 Étape 5 : Bouclez avec while et prenez une décision avec if.\u003cbr\u003e 2.6 Étape 6 : Itérons en utilisant foreach et for.\u003cbr\u003e 2.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 3.\u003cbr\u003e La deuxième étape de Scala\u003cbr\u003e 3.1 Étape 7 : Spécifions un paramètre de type pour le tableau.\u003cbr\u003e 3.2 Étape 8 : Utilisons une liste\u003cbr\u003e 3.3 Étape 9 : Utilisons des tuples\u003cbr\u003e 3.4 Étape 10 : Utilisons des ensembles et des cartes.\u003cbr\u003e 3.5 Étape 11 : Apprendre à reconnaître les styles fonctionnels\u003cbr\u003e 3.6 Étape 12 : Lire le contenu du fichier ligne par ligne\u003cbr\u003e 3.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 4.\u003cbr\u003e Classes et objets \u003cbr\u003e4.1 Classes, champs et méthodes\u003cbr\u003e 4.2 Inférence par point-virgule\u003cbr\u003e 4.3 Objets singleton\u003cbr\u003e 4.4 Applications Scala\u003cbr\u003e 4.5 Caractéristiques de l'application\u003cbr\u003e 4.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 5.\u003cbr\u003e Types et opérations de base\u003cbr\u003e 5.1 Types de base\u003cbr\u003e 5.2 Littéral\u003cbr\u003e 5.3 Interpolation de chaînes\u003cbr\u003e 5.4 Les opérateurs sont des méthodes\u003cbr\u003e 5.5 Opérations arithmétiques\u003cbr\u003e 5.6 Opérations relationnelles et logiques\u003cbr\u003e 5.7 Opérations sur les bits\u003cbr\u003e 5.8 Identité de l'objet\u003cbr\u003e 5.9 Priorité et associativité des opérateurs\u003cbr\u003e 5.10 Rappeur riche\u003cbr\u003e 5.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 6.\u003cbr\u003e objets fonctionnels\u003cbr\u003e 6.1 Spécifications de classe de fraction\u003cbr\u003e 6.2 Création rationnelle\u003cbr\u003e 6.3 Réimplémentation de la méthode toString\u003cbr\u003e 6.4 Vérifier les prérequis\u003cbr\u003e 6.5 Champs ajoutés\u003cbr\u003e 6.6 Auto-référence\u003cbr\u003e 6.7 Constructeurs auxiliaires\u003cbr\u003e 6.8 Champs et méthodes privés\u003cbr\u003e 6.9 Définitions des opérateurs\u003cbr\u003e 6.10 Identificateurs en Scala\u003cbr\u003e 6.11 Surcharge de méthode\u003cbr\u003e 6.12 Conversion de type implicite\u003cbr\u003e 6.13 Précautions\u003cbr\u003e 6.14 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 7.\u003cbr\u003e Instructions de contrôle intégrées\u003cbr\u003e 7.1 Expressions if\u003cbr\u003e 7.2 boucle while\u003cbr\u003e 7.3 pour les expressions\u003cbr\u003e 7.4 Gestion des exceptions avec les expressions try\u003cbr\u003e 7.5 expression de correspondance\u003cbr\u003e 7.6 Vivre sans interruption ni déclaration de continuité\u003cbr\u003e 7.7 Portée variable\u003cbr\u003e 7.8 Code de style impératif de refactorisation\u003cbr\u003e 7.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 8. \u003cbr\u003eFonctions et fermetures\u003cbr\u003e 8.1 Méthode\u003cbr\u003e 8.2 Fonctions locales\u003cbr\u003e 8.3 Fonctions hiérarchiques de première classe\u003cbr\u003e 8.4 Formes simples de littéraux de fonction\u003cbr\u003e 8.5 Grammaire des indicateurs positionnels\u003cbr\u003e 8.6 Fonction partiellement appliquée\u003cbr\u003e 8.7 Fermeture\u003cbr\u003e 8.8 Formes particulières d'appels de fonction\u003cbr\u003e 8.9 Récursivité terminale\u003cbr\u003e 8.10 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 9.\u003cbr\u003e abstraction du contrôle de flux\u003cbr\u003e 9.1 Réduction de la duplication du code\u003cbr\u003e 9.2 Simplification du code client\u003cbr\u003e 9.3 Curling\u003cbr\u003e 9.4 Écriture d'une nouvelle structure de contrôle\u003cbr\u003e 9.5 Appel des paramètres par leur nom\u003cbr\u003e 9.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 10.\u003cbr\u003e Héritage et composition\u003cbr\u003e 10.1 Bibliothèque de mises en page 2D\u003cbr\u003e 10.2 Classes abstraites\u003cbr\u003e 10.3 Définition d'une méthode sans paramètres\u003cbr\u003e 10.4 Extensions de classe\u003cbr\u003e 10.5 Remplacement des méthodes et des champs\u003cbr\u003e 10.6 Définition des champs de paramètres\u003cbr\u003e 10.7 Appel du constructeur de la superclasse\u003cbr\u003e 10.8 Utilisation du modificateur de remplacement\u003cbr\u003e 10.9 Polymorphisme et liaison dynamique\u003cbr\u003e 10.10 Déclaration finale des membres\u003cbr\u003e 10.11 Utilisation de l'héritage et de la composition\u003cbr\u003e 10.12 Ci-dessus, à côté, l'implémentation de toString\u003cbr\u003e 10.13 Définition d'un objet Factory\u003cbr\u003e 10.14 Réglage de la hauteur et de la largeur\u003cbr\u003e 10.15 Collecte et test\u003cbr\u003e 10.16 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 11.\u003cbr\u003e La hiérarchie de Scala \u003cbr\u003e11.1 Hiérarchie des classes de Scala\u003cbr\u003e 11.2 Comment avez-vous implémenté plusieurs classes de base ?\u003cbr\u003e 11.3 Tapez sur le sol\u003cbr\u003e 11.4 Définir sa propre classe de valeurs\u003cbr\u003e 11.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 12.\u003cbr\u003e trait\u003cbr\u003e 12.1 Fonctionnement des traits\u003cbr\u003e 12.2 Interface simple et riche\u003cbr\u003e 12.3 Exemple : Objet Rectangle\u003cbr\u003e 12.4 Caractéristiques ordonnées\u003cbr\u003e 12.5 Cumul des modifications à l'aide de traits\u003cbr\u003e 12.6 Pourquoi l'héritage multiple n'est-il pas autorisé ?\u003cbr\u003e 12.7 Être ou ne pas être un trait, telle est la question\u003cbr\u003e 12.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 13.\u003cbr\u003e Colis et importations\u003cbr\u003e 13.1 Écrire du code à l'intérieur d'un package\u003cbr\u003e 13.2 Accès concis au code associé\u003cbr\u003e 13.3 Import\u003cbr\u003e 13.4 Importations implicites\u003cbr\u003e 13.5 Modificateurs d'accès\u003cbr\u003e 13.6 Objets du paquet\u003cbr\u003e 13.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 14.\u003cbr\u003e Assertions et tests\u003cbr\u003e 14.1 Déclarations affirmatives\u003cbr\u003e 14.2 Tests en Scala\u003cbr\u003e 14.3 Signalement des défaillances fournissant des informations suffisantes\u003cbr\u003e 14.4 Tests avec spécifications\u003cbr\u003e 14.5 Tests basés sur les propriétés\u003cbr\u003e 14.6 Organisation et exécution des tests\u003cbr\u003e 14.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 15.\u003cbr\u003e Classes de cas et correspondance de modèles\u003cbr\u003e 15.1 Un exemple simple \u003cbr\u003e15.2 Types de motifs\u003cbr\u003e 15.3 Protection de motif\u003cbr\u003e 15.4 Chevauchement de motifs\u003cbr\u003e Classe scellée 15.5\u003cbr\u003e 15.6 Type d'option\u003cbr\u003e 15.7 Les motifs sont partout\u003cbr\u003e 15.8 Exemples complexes\u003cbr\u003e 15.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Liste du chapitre 16\u003cbr\u003e 16.1 Liste des littéraux\u003cbr\u003e 16.2 Type de liste\u003cbr\u003e 16.3 Création d'une liste\u003cbr\u003e 16.4 Opérations de base sur les listes\u003cbr\u003e 16.5 Modèles de listes\u003cbr\u003e 16.6 Méthode principale de la classe List\u003cbr\u003e 16.7 Méthodes d'ordre supérieur de la classe List\u003cbr\u003e 16.8 Méthodes de l'objet Liste\u003cbr\u003e 16.9 Traitement simultané de plusieurs listes\u003cbr\u003e 16.10 Comprendre l'algorithme d'inférence de type de Scala\u003cbr\u003e 16.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 17.\u003cbr\u003e Collection\u003cbr\u003e 17.1 Séquence\u003cbr\u003e 17.2 Ensembles et cartes\u003cbr\u003e 17.3 Collections mutables et immuables\u003cbr\u003e 17.4 Initialisation de la collection\u003cbr\u003e 17,5 Tuples\u003cbr\u003e 17.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 18.\u003cbr\u003e objets mutables\u003cbr\u003e 18.1 Qu'est-ce qui rend un objet mutable ?\u003cbr\u003e 18.2 Variables et propriétés réassignables\u003cbr\u003e 18.3 Étude de cas : Simulation d'événements discrets\u003cbr\u003e 18.4 Langage pour circuits numériques\u003cbr\u003e 18.5 API de simulation\u003cbr\u003e 18.6 Simulation de circuit\u003cbr\u003e 18.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 19.\u003cbr\u003e Paramétrage de type\u003cbr\u003e 19.1 Files d'attente fonctionnelles\u003cbr\u003e 19.2 Dissimulation d'informations\u003cbr\u003e 19.3 Notation modifiée \u003cbr\u003e19.4 Vérification de la notation mutée\u003cbr\u003e 19,5 Limite inférieure\u003cbr\u003e 19.6 Anticommutation\u003cbr\u003e 19.7 Données privées des objets\u003cbr\u003e 19,8 Limite supérieure\u003cbr\u003e 19.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 20.\u003cbr\u003e membre abstrait\u003cbr\u003e 20.1 Un bref aperçu des membres du résumé\u003cbr\u003e 20.2 Type Membre\u003cbr\u003e 20.3 Valeur abstraite\u003cbr\u003e 20.4 Variable abstraite\u003cbr\u003e 20.5 Initialisation de la valeur abstraite\u003cbr\u003e 20.6 Types abstraits\u003cbr\u003e 20.7 Types dépendants du chemin\u003cbr\u003e 20.8 Type subdivisé\u003cbr\u003e 20.9 Énumérations\u003cbr\u003e 20.10 Étude de cas : Conversion de devises\u003cbr\u003e 20.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 21.\u003cbr\u003e Conversions implicites et paramètres implicites\u003cbr\u003e 21.1 Conversion implicite\u003cbr\u003e 21.2 Règles d'implication\u003cbr\u003e 21.3 Conversion implicite vers le type attendu\u003cbr\u003e 21.4 Conversion de l'objet cible de l'appel\u003cbr\u003e 21.5 Paramètres implicites\u003cbr\u003e 21.6 Limites du contexte\u003cbr\u003e 21.7 Lors de l'utilisation de plusieurs transformations\u003cbr\u003e 21.8 Débogage implicite\u003cbr\u003e 21.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 22.\u003cbr\u003e Implémentation de liste\u003cbr\u003e 22.1 Aperçu de la classe Liste\u003cbr\u003e 22.2 Classe ListBuffer\u003cbr\u003e 22.3 Liste réelle des classes\u003cbr\u003e 22.4 Fonctionnel vu de l'extérieur\u003cbr\u003e 22.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 23.\u003cbr\u003e Examen de l'expression for\u003cbr\u003e 23.1 pour les expressions\u003cbr\u003e 23.2 n Problème de la reine\u003cbr\u003e 23.3 Requête avec la formule for\u003cbr\u003e 23.4 pour la conversion d'expressions\u003cbr\u003e 23.5 Application inverse\u003cbr\u003e 23.6 pour la généralisation\u003cbr\u003e 23.7 Conclusion \u003cbr\u003eUn regard plus attentif sur le chapitre 24, collection 577\u003cbr\u003e 24.1 Collections mutables et immuables\u003cbr\u003e 24.2 Cohérence de la collecte\u003cbr\u003e 24.3 Caractéristique itérable\u003cbr\u003e 24.4 Caractéristiques des séquences : Seq, IndexedSeq, LinearSeq\u003cbr\u003e Ensemble de 24,5\u003cbr\u003e Carte 24.6\u003cbr\u003e 24.7 Classes de collections concrètes immuables\u003cbr\u003e 24.8 Classes de collections de béton mutables\u003cbr\u003e 24.9 tableaux\u003cbr\u003e 24.10 Chaîne\u003cbr\u003e 24.11 Caractéristiques de performance\u003cbr\u003e 24.12 Identité\u003cbr\u003e 24,13 vues\u003cbr\u003e 24.14 Itérateur\u003cbr\u003e 24.15 Créer votre première collection\u003cbr\u003e 24.16 Conversion des collections Java et Scala\u003cbr\u003e 24.17 Conclusion\u003cbr\u003e Chapitre 25 : Architecture des collections Scala 647\u003cbr\u003e 25.1 Regroupement des opérations communes\u003cbr\u003e 25.2 Ajout d'une nouvelle collection\u003cbr\u003e 25.3 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 26.\u003cbr\u003e extracteur\u003cbr\u003e 26.1 Exemple : Extraction d'adresses électroniques\u003cbr\u003e 26.2 Extracteur\u003cbr\u003e 26.3 Modèles sans variable ou avec une seule variable\u003cbr\u003e 26.4 Extracteur d'arguments variables\u003cbr\u003e 26.5 Extracteurs et modèles de séquences\u003cbr\u003e 26.6 Extracteur et classes de cas\u003cbr\u003e 26.7 Expressions régulières\u003cbr\u003e 26.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 27.\u003cbr\u003e Annotation\u003cbr\u003e 27.1 Pourquoi des annotations sont-elles nécessaires ?\u003cbr\u003e 27.2 Grammaire d'annotation\u003cbr\u003e 27.3 Annotations standard \u003cbr\u003e27.4 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 28. Travailler avec XML\u003cbr\u003e 28.1 Données semi-structurées\u003cbr\u003e 28.2 Aperçu XML\u003cbr\u003e 28.3 Littéraux XML\u003cbr\u003e 28.4 Sérialisation\u003cbr\u003e 28.5 Analyse XML\u003cbr\u003e 28.6 Désérialisation\u003cbr\u003e 28.7 Sauvegarde et chargement\u003cbr\u003e 28.8 Correspondance de modèles pour XML\u003cbr\u003e 28.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 29.\u003cbr\u003e Programmation modulaire utilisant des objets\u003cbr\u003e Problème 29.1\u003cbr\u003e 29.2 Application de recette\u003cbr\u003e 29.3 Abstraction\u003cbr\u003e 29.4 Séparation des modules en traits\u003cbr\u003e 29.5 Liaison d'exécution\u003cbr\u003e 29.6 Instances du module de suivi\u003cbr\u003e 29.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 30.\u003cbr\u003e identité des objets\u003cbr\u003e 30.1 Identité en Scala\u003cbr\u003e 30.2 Écrire une méthode de comparaison d'identité\u003cbr\u003e 30.3 Définition de l'identité des types paramétrés\u003cbr\u003e 30.4 Recettes Equals et HashCode\u003cbr\u003e 30.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 31.\u003cbr\u003e Combiner Scala et Java\u003cbr\u003e 31.1 Utilisation de Scala en Java\u003cbr\u003e 31.2 Annotations\u003cbr\u003e 31.3 Types de caractères génériques\u003cbr\u003e 31.4 Compilation conjointe de Scala et Java\u003cbr\u003e 31.5 Intégration de Java 8\u003cbr\u003e 31.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 32.\u003cbr\u003e Futur et simultanéité\u003cbr\u003e 32.1 Troubles au paradis\u003cbr\u003e 32.2 Exécution asynchrone et essai\u003cbr\u003e 32.3 Utilisation du futur\u003cbr\u003e 32.4 Test futur\u003cbr\u003e 32.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 33.\u003cbr\u003e Analyse combinatoire\u003cbr\u003e 33.1 Exemple : Expressions arithmétiques \u003cbr\u003e33.2 Exécution de l'analyseur syntaxique\u003cbr\u003e 33.3 Analyseur d'expressions régulières de base\u003cbr\u003e 33.4 Autre exemple : JSON\u003cbr\u003e 33.5 Résultats de l'analyseur\u003cbr\u003e 33.6 Implémentation de l'analyseur syntaxique combinatoire\u003cbr\u003e 33.7 Chaînes littérales et expressions régulières\u003cbr\u003e 33.8 Analyse lexicale et syntaxique\u003cbr\u003e 33.9 Rapport d'erreur\u003cbr\u003e 33.10 Retour arrière et LL(1)\u003cbr\u003e 33.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 34. Programmation d'interfaces graphiques\u003cbr\u003e 34.1 Première application Swing\u003cbr\u003e 34.2 Panneaux et agencements\u003cbr\u003e 34.3 Gestion des événements\u003cbr\u003e 34.4 Exemple : Convertisseur Celsius\/Fahrenheit\u003cbr\u003e 34.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapitre 35. Feuille de calcul SCells\u003cbr\u003e 35.1 Cadre d'écran\u003cbr\u003e 35.2 Séparation de la saisie des données et de l'affichage à l'écran\u003cbr\u003e 35,3 aliments\u003cbr\u003e Analyse du type 35.4\u003cbr\u003e 35,5 calcul\u003cbr\u003e 35.6 Bibliothèque d'opérations\u003cbr\u003e 35.7 Propagation du changement\u003cbr\u003e 35.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Annexe A.\u003cbr\u003e Utilisation de scripts Scala sous Unix et Windows\u003cbr\u003e Annexe B.\u003cbr\u003e Glossaire des termes\u003cbr\u003e Annexe C.\u003cbr\u003e Références\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003e★ Article recommandé ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Lorsque j'ai commencé à programmer en 2004 et que j'ai choisi Scala, un langage alors peu connu, je n'avais aucune idée du voyage d'exploration et de découverte dans lequel je m'embarquais.\u003cbr\u003e\u003cbr\u003e \u003cbr\u003eLorsque j'ai commencé à expérimenter avec Scala, j'ai eu l'impression que cela ressemblait beaucoup à n'importe quel autre langage que j'avais utilisé auparavant, mais c'était un processus d'essais et d'erreurs, de découverte par l'expérimentation et d'illumination après des malentendus.\u003cbr\u003e À l'époque, il existait très peu de documentation pour apprendre Scala, pas de tutoriels, pas de blogs et aucun utilisateur de Scala suffisamment expérimenté pour me l'enseigner.\u003cbr\u003e Bien sûr, il n'existait pas de livre comme 『Programming in Scala』.\u003cbr\u003e Il existait des langages qui offraient de nouvelles fonctionnalités extraordinaires, mais personne ne savait vraiment comment les utiliser correctement.\u003cbr\u003e Cette situation était à la fois inspirante et déconcertante !\u003cbr\u003e\u003cbr\u003e En tant que développeur Java, j'avais une idée du style de programmation, mais l'expérience de coder en Scala au quotidien était différente.\u003cbr\u003e Je me souviens de mes premières aventures, de mon apprentissage de Scala et de ma collaboration sur des projets de taille moyenne avec d'autres personnes. \u003cbr\u003eIl y a eu des moments où j'ai décidé de remanier le code (et j'ai dû le faire assez souvent au fur et à mesure que je découvrais et apprenais de nouvelles fonctionnalités et de nouveaux modèles), et des moments où j'ai dû compiler plusieurs fois.\u003cbr\u003e\u003cbr\u003e Le compilateur génère à chaque fois diverses erreurs, ainsi que les numéros de ligne du code source.\u003cbr\u003e À chaque fois, je regardais le code, je cherchais ce qui n'allait pas, puis je modifiais le code pour corriger l'erreur (bien sûr, souvent l'erreur se déplaçait à un autre endroit au fur et à mesure que je modifiais le code).\u003cbr\u003e Mais à chacune de ces étapes, le compilateur m'a conduit directement à la racine du problème.\u003cbr\u003e Il m'est arrivé de passer des jours à essayer de modifier le code sans jamais réussir à le compiler. \u003cbr\u003eMais j'ai réussi à faire fonctionner mon logiciel, fortement remanié, pour la première fois, en réduisant le nombre d'erreurs de compilation de quelques centaines à une douzaine, puis en réduisant ces erreurs à une seule, et enfin en les éliminant complètement (ce qui signifie qu'il a été compilé avec succès).\u003cbr\u003e\u003cbr\u003e Et contrairement à mes attentes, le code compilé a fonctionné parfaitement dès le départ.\u003cbr\u003e En tant que jeune programmeur n'ayant expérimenté que Java, Perl, Pascal, Basic, PHP et JavaScript, je ne peux exprimer avec des mots à quel point cette expérience a été impressionnante.\u003cbr\u003e Dans son discours d'ouverture à la conférence Scala World que j'ai organisée en 2015, Runar Bjarnason a soutenu que « les contraintes donnent la liberté, et la liberté impose des contraintes ».\u003cbr\u003e Cette vérité est particulièrement évidente lors de la compilation en Scala. \u003cbr\u003eL'objectif principal de scalac, en imposant diverses contraintes, est d'empêcher les programmeurs de commettre des erreurs susceptibles de se produire lors de l'exécution (et ce sont les pires de toutes les erreurs), ce qui libère tous les programmeurs.\u003cbr\u003e Cela permet aux programmeurs d'expérimenter, d'explorer et de modifier le logiciel en toute confiance, même sans suite de tests complète.\u003cbr\u003e\u003cbr\u003e Des années ont passé depuis, et aujourd'hui encore, je continue d'apprendre Scala, découvrant de nouvelles possibilités, des différences sémantiques subtiles et des interactions intéressantes entre différentes fonctionnalités.\u003cbr\u003e Je ne connais aucun autre langage de programmation qui offre une telle profondeur et qui permette de maintenir l'intérêt des utilisateurs pendant tant d'années.\u003cbr\u003e\u003cbr\u003e Scala est sur le point de connaître une période de changements considérables. \u003cbr\u003eLa prochaine version majeure, Scala 3, contiendra autant de changements que lorsque je suis passé de Java à Scala 2 il y a 15 ans.\u003cbr\u003e Bien que l'expérience de programmation quotidienne avec Scala reste globalement la même, Scala 3 apporte un ensemble de nouvelles fonctionnalités qui couvrent la quasi-totalité du langage Scala.\u003cbr\u003e À l'heure où nous écrivons ces lignes, Scala 3 n'est pas près d'être largement adopté, et Scala 2 restera probablement la norme de facto dans un avenir prévisible.\u003cbr\u003e\u003cbr\u003e Ce livre couvre en détail la dernière version de Scala 2, Scala 2.13.\u003cbr\u003e Nous présentons également la bibliothèque de collections, qui a été repensée et intégrée à la bibliothèque standard afin de simplifier davantage sa structure tout en intégrant les enseignements tirés de la refonte majeure introduite dans Scala 2.8.\u003cbr\u003e La nouvelle bibliothèque de collections peut être compilée en Scala 2 et 3. \u003cbr\u003eCette bibliothèque de collections constituera donc la base du code qui sera utilisé pendant les 10 prochaines années.\u003cbr\u003e Alors, avant de vous enthousiasmer pour le nouveau Scala, c'est le moment idéal pour vous procurer ce livre et commencer à apprendre !\u003cbr\u003e\u003cbr\u003e Jon Pretty\u003cbr\u003e Cracovie, Pologne, 12 septembre 2019\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Public cible de ce livre ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Le public cible principal est constitué de programmeurs qui souhaitent apprendre à écrire des programmes en Scala.\u003cbr\u003e Si vous souhaitez aborder votre prochain projet en Scala, ce livre est fait pour vous.\u003cbr\u003e Les programmeurs désireux d'élargir leurs horizons en apprenant de nouveaux concepts trouveront également ce livre agréable.\u003cbr\u003e Par exemple, un programmeur Java peut apprendre divers concepts de programmation fonctionnelle et des idées orientées objet plus avancées en lisant ce livre.\u003cbr\u003e Je suis convaincu qu'après avoir appris Scala et ses concepts, vous deviendrez assurément un meilleur programmeur.\u003cbr\u003e \u003cbr\u003eNous supposons que le lecteur possède des connaissances générales en programmation.\u003cbr\u003e Bien que Scala soit un bon langage pour débuter l'apprentissage de la programmation, ce livre ne vous apprend pas à programmer.\u003cbr\u003e Toutefois, aucune connaissance préalable d'un langage de programmation n'est requise.\u003cbr\u003e Bien que la plupart des programmeurs utilisent Scala sur la plateforme Java, nous ne supposons pas que les lecteurs aient des connaissances en Java.\u003cbr\u003e Cependant, comme nous supposons que de nombreux lecteurs connaissent Java, nous comparerons occasionnellement Java et Scala afin d'aider les lecteurs familiers avec le développement Java à comprendre.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Structure de ce livre ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Le chapitre 1, « Langage extensible », explique la conception de Scala et sa justification, et fournit un historique général.\u003cbr\u003e Le chapitre 2, « Premiers pas en Scala », montre comment gérer les tâches de programmation de base en Scala.\u003cbr\u003e Je n'entrerai pas dans les détails sur le fonctionnement de chacune. \u003cbr\u003eL'objectif du chapitre 2 est d'amener le lecteur à saisir et à exécuter du code Scala.\u003cbr\u003e Le chapitre 3, « Scala : Deuxièmes étapes », présente des tâches de programmation plus basiques pour vous aider à vous familiariser plus rapidement avec Scala.\u003cbr\u003e Après avoir terminé le chapitre 3, vous serez capable d'utiliser Scala pour des tâches de script simples.\u003cbr\u003e Le chapitre 4, « Classes et objets », détaille les éléments constitutifs de base orientés objet de Scala et montre comment compiler et exécuter des applications Scala.\u003cbr\u003e Le chapitre 5, « Types de base et opérations », explique les types de base de Scala et leurs littéraux.\u003cbr\u003e Et il explique les opérations, les règles de priorité et d'associativité qui peuvent être utilisées pour chaque type.\u003cbr\u003e Enfin, parlons de l'enveloppe luxueuse.\u003cbr\u003e Le chapitre 6, « Objets fonctionnels », approfondit les aspects orientés objet de Scala.\u003cbr\u003e Prenons comme exemple un nombre rationnel fonctionnel immuable. \u003cbr\u003eLe chapitre 7, « Instructions de contrôle intégrées », montre comment utiliser les structures de contrôle fournies par Scala : if, while, for, try et match.\u003cbr\u003e Le chapitre 8, « Fonctions et fermetures », détaille les fonctions, les éléments constitutifs de base des langages fonctionnels.\u003cbr\u003e Le chapitre 9, « Abstractions du flux de contrôle », explique comment les lecteurs peuvent créer leurs propres abstractions de contrôle pour compléter les structures de contrôle de base de Scala.\u003cbr\u003e Le chapitre 10, « Héritage et composition », explique comment Scala prend en charge la programmation orientée objet.\u003cbr\u003e Les sujets abordés ne sont pas aussi fondamentaux que ceux du chapitre 4, mais ils sont plus fréquemment rencontrés dans la pratique.\u003cbr\u003e Le chapitre 11, « La hiérarchie de Scala », explique la hiérarchie d'héritage de Scala et les méthodes communes et les types de base disponibles dans toutes les hiérarchies.\u003cbr\u003e Le chapitre 12, « Traits », traite du mécanisme de combinaison des mixins en Scala. \u003cbr\u003eLe chapitre 12 explique le fonctionnement des traits, décrit les cas d'utilisation courants et montre comment les traits améliorent l'héritage multiple traditionnel.\u003cbr\u003e Le chapitre 13, « Packages et importations », aborde les problèmes qui surviennent dans la programmation à grande échelle.\u003cbr\u003e Décrit les paquets de niveau supérieur, les commandes d'importation et les modificateurs de contrôle d'accès tels que protected et private.\u003cbr\u003e Le chapitre 14, « Assertions et tests », couvre le mécanisme d'assertion de Scala et explore brièvement plusieurs outils de test disponibles en Scala.\u003cbr\u003e Nous nous concentrerons notamment sur ScalaTest.\u003cbr\u003e Le chapitre 15, « Classes de cas et correspondance de modèles », introduit une paire de constructions qui permettent d'écrire des structures de données communes non encapsulées.\u003cbr\u003e En particulier, les classes de cas et les correspondances de modèles sont utiles lors de la création de données récursives telles que des structures arborescentes. \u003cbr\u003eLe chapitre 16, « Listes », détaille les listes, la structure de données la plus couramment utilisée dans les programmes Scala.\u003cbr\u003e Le chapitre 17, « Collections », montre comment utiliser les collections Scala de base telles que les listes, les tableaux, les tuples, les ensembles et les maps.\u003cbr\u003e Le chapitre 18, « Objets mutables », explique les objets mutables et apprend comment les exprimer en Scala.\u003cbr\u003e La dernière partie du chapitre 18 traite de la simulation d'événements discrets, qui utilise concrètement des objets mutables.\u003cbr\u003e Le chapitre 19, « Paramétrage de type », explique certaines des techniques de dissimulation d'informations introduites au chapitre 13 avec des exemples spécifiques.\u003cbr\u003e Par exemple, créer une classe de file d'attente entièrement fonctionnelle.\u003cbr\u003e Le chapitre 19 explique la variance des paramètres de type et discute de la relation entre la variance et la dissimulation d'informations.\u003cbr\u003e Le chapitre 20, « Membres abstraits », décrit tous les membres abstraits pris en charge par Scala. \u003cbr\u003eNon seulement les méthodes, mais aussi les champs et les types peuvent être définis comme des membres abstraits.\u003cbr\u003e Le chapitre 21, « Conversions implicites et paramètres implicites », introduit deux éléments qui aident le compilateur à fournir aux programmeurs les informations nécessaires en leur permettant d'omettre des parties potentiellement fastidieuses de leur code source.\u003cbr\u003e Le chapitre 22, « Implémentation de la classe List », explique l'implémentation de la classe List.\u003cbr\u003e Il est important de comprendre comment fonctionnent les listes Scala.\u003cbr\u003e De plus, cette implémentation démontre également comment tirer parti de certaines fonctionnalités de Scala.\u003cbr\u003e Le chapitre 23, « Revisiter l’expression for », montre comment l’expression for peut être convertie en commandes qui appellent map, flatMap, filter, foreach, etc.\u003cbr\u003e Le chapitre 24, « Un regard plus attentif sur les collections », fournit une explication détaillée de la bibliothèque de collections Scala. \u003cbr\u003eLe chapitre 25, « L'architecture des collections Scala », montre comment nous avons construit la bibliothèque de collections et explique comment vous pouvez implémenter vos propres collections.\u003cbr\u003e Le chapitre 26, « Extracteur », montre comment effectuer une correspondance de modèles sur des classes arbitraires, et pas seulement sur des classes de cas.\u003cbr\u003e Le chapitre 27, « Annotations », montre comment utiliser les extensions de langage grâce aux annotations.\u003cbr\u003e Nous aborderons les annotations standard et la manière de créer les vôtres.\u003cbr\u003e Le chapitre 28, « Manipulation de XML », explique comment manipuler du XML en Scala. Il présente plusieurs méthodes pour générer, analyser et traiter du XML.\u003cbr\u003e Le chapitre 29, « Programmation modulaire avec les objets », montre comment utiliser les objets de Scala comme système de modules.\u003cbr\u003e Le chapitre 30, « Identité de l'objet », explique ce qu'il faut prendre en compte lors de l'écriture d'une méthode equals. \u003cbr\u003eIl y a quelques pièges à éviter.\u003cbr\u003e Le chapitre 31, « Combiner Scala et Java », aborde les problèmes qui surviennent lors de l’utilisation conjointe de Scala et de Java dans un même projet et propose des solutions.\u003cbr\u003e Le chapitre 32, « Futures et concurrence », montre comment utiliser les Futures en Scala.\u003cbr\u003e Bien que vous puissiez tirer parti des primitives et bibliothèques de concurrence de Java dans vos programmes Scala, l'utilisation des futures vous aide à éviter les interblocages et les conditions de concurrence qui affectent souvent les approches traditionnelles « threads et verrous ».\u003cbr\u003e Le chapitre 33, « Analyse syntaxique par combinateurs », montre comment construire un analyseur syntaxique à l'aide de la bibliothèque d'analyseurs combinateurs de Scala.\u003cbr\u003e Le chapitre 34, « Programmation d'interfaces graphiques », présente le processus de programmation d'interfaces graphiques Swing simples à l'aide de la bibliothèque Scala. \u003cbr\u003eLe chapitre 35, « SCells Spreadsheet », rassemble ce que vous avez appris jusqu'à présent pour créer une application de tableur complète en Scala.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Note de l'auteur ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Ce livre étant un tutoriel, il est recommandé de le lire de manière séquentielle, du début à la fin.\u003cbr\u003e Nous avons tout mis en œuvre pour n'introduire qu'un seul sujet à la fois et pour expliquer les nouveaux sujets en nous basant sur ce qui a été décrit précédemment.\u003cbr\u003e Ainsi, si vous deviez feuilleter un livre jusqu'à la fin pour avoir un aperçu rapide d'un sujet, vous pourriez avoir du mal à le comprendre car il est probablement expliqué à l'aide de concepts qui vous sont inconnus.\u003cbr\u003e En lisant chaque chapitre dans l'ordre, vous pourrez facilement développer vos compétences en Scala, étape par étape.\u003cbr\u003e Si vous rencontrez un terme que vous ne connaissez pas, consultez les sections « Recherche » et « Glossaire ».\u003cbr\u003e Certains lecteurs se contenteront peut-être de parcourir le livre en diagonale.\u003cbr\u003e Ce n'est pas grave. \u003cbr\u003eLes fonctions « Recherche » et « Glossaire » vous aideront à réexaminer les passages que vous auriez pu négliger.\u003cbr\u003e Ce livre peut servir de référence linguistique même après une seule lecture.\u003cbr\u003e Bien qu'il existe une spécification formelle pour le langage Scala, cette spécification sacrifie la lisibilité à la correction.\u003cbr\u003e Bien que ce livre ne couvre pas tous les détails de Scala, il aborde un large éventail de sujets et constituera une référence pratique pour votre langage à mesure que vous progresserez en programmation Scala.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Note du traducteur ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Même en 2014, lorsque j'ai traduit la deuxième édition de 『Programming in Scala』, l'intérêt pour Scala n'était pas si grand en Corée. \u003cbr\u003eCependant, à peu près au même moment où la deuxième édition est sortie, Apache Spark a gagné en popularité et le nombre de startups technologiques a augmenté, entraînant une augmentation rapide de l'intérêt pour des langages comme Python et Scala, plus faciles à utiliser que des langages comme Java.\u003cbr\u003e Par conséquent, le nombre de développeurs rejoignant la communauté Scala a augmenté, et Scala a bénéficié d'une attention accrue dans divers groupes d'étude et séminaires.\u003cbr\u003e À mesure que les versions de Scala augmentent, certaines fonctionnalités utilisées dans les versions plus anciennes sont supprimées, certains termes ou usages ont changé et de nouvelles fonctionnalités sont introduites.\u003cbr\u003e Tout comme les langues courantes telles que le coréen et l'anglais évoluent, le fait que les langages de programmation adoptent naturellement de tels changements en fonction de leur environnement d'utilisation ou des besoins des utilisateurs témoigne de la santé et du dynamisme d'une langue et de sa communauté. \u003cbr\u003eJe suis particulièrement heureux de pouvoir traduire et publier la 4e édition, qui a été repensée pour être plus simple et qui a complété le contenu de la bibliothèque de la collection avant la sortie de Scala 3 (Dotty).\u003cbr\u003e Comme je l'ai mentionné dans la note du traducteur de la troisième édition, l'utilisation de langages de paradigmes différents peut faire de vous un meilleur programmeur, que vous fassiez de la programmation procédurale ou orientée objet.\u003cbr\u003e À travers ce livre, j'espère que les lecteurs apprendront bien Scala, appliqueront leurs connaissances en Scala et en programmation fonctionnelle, et deviendront des programmeurs capables de créer du code lisible et maintenable en utilisant les bons concepts au bon moment, quel que soit le langage de programmation utilisé.\u003cbr\u003e\u003cbr\u003e Oh Hyeon-seok\u003cbr\u003e Décembre 2020 à Brisbane, Australie\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e SPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate de publication :\u003c\/strong\u003e 15 janvier 2021\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 924 pages | 1 760 g | 188 × 235 × 44 mm\u003c\/div\u003e\n\n \u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791161754871\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10 :\u003c\/strong\u003e 1161754873 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893355905066,"sku":"139425","price":68.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/b18f0b6123bf651ba47a38ebcd3c6c25.jpg?v=1765398168","url":"https:\/\/librairie.coreenne.fr\/products\/139425","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}