Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scala Facile

Scala Facile

Prez "Tuto" sur Scala pour les débutant au JugSummercamp 2017

Philippe CHARRIERE

September 15, 2017
Tweet

More Decks by Philippe CHARRIERE

Other Decks in Programming

Transcript

  1. #JSC2017 @k33g_org SCALACESTCOMMEJS “Scala, ça ressemble à de l’ES2015 sans

    ;” _ Philippe Charrière … probablement lors d’un apéro
  2. #JSC2017 @k33g_org SCALACESTCOMMEJS Format du talk un "mini cours", je

    vais aller un peu vite pour que l'on un max de notions une liste de bouts de code Objectif: avoir le nécessaire pour faire du Scala dès ce week end https://github.com/k33g/scala.is.the.new.javascript
  3. #JSC2017 @k33g_org SCALACESTCOMMEJS Avertissements Je ne suis pas un spécialiste

    Scala J’aime rendre les choses simples Un Scalafiste tuerait probablement mon Apprenons d’abord à ❤ ce langage … … la pureté on verra plus tard
  4. #JSC2017 @k33g_org SCALACESTCOMMEJS Installation(s) - pré-requis: Java 8 JDK -

    https://www.scala-lang.org/download/ - 2 choix: SBT (Scala Build Tool) - à la ✋ (https://www.scala-lang.org/download/install.html) pour la version à la main ⚠ mettre à jour les variables d'environnement
  5. #JSC2017 @k33g_org SCALACESTCOMMEJS SBT | Installation - OSX: brew install

    sbt | ou brew upgrade sbt - Windows: MSI Installer: http://www.scala-sbt.org/0.13/docs/ Installing-sbt-on-Windows.html - Linux: - Universal package: https://cocl.us/sbt01316zip - Debian package: https://dl.bintray.com/sbt/debian/ sbt-0.13.16.deb - RPM package: http://www.scala-sbt.org/0.13/docs/ Installing-sbt-on-Linux.html - Ubuntu: apt-get
  6. #JSC2017 @k33g_org SCALACESTCOMMEJS IDE - IntelliJ (NetBeans, Eclipse) - VSCode

    - ext install scala (Iliya Tryapitsin) - couleur: https://marketplace.visualstudio.com/items? itemName=itryapitsin.Scala - ENSIME http://ensime.org
  7. #JSC2017 @k33g_org SCALACESTCOMMEJS 1er projet Scala mkdir hello cd hello

    mkdir -p src/{main,test}/{java,resources,scala} mkdir lib project . ├── lib ├── project ├── src │ ├── main │ │ ├── java │ │ ├── resources │ │ └── scala │ └── test │ ├── java │ ├── resources │ └── scala
  8. #JSC2017 @k33g_org SCALACESTCOMMEJS Hello . ├── lib ├── project ├──

    src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala
  9. #JSC2017 @k33g_org SCALACESTCOMMEJS Hello . ├── lib ├── project ├──

    src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala ├── build.sbt
  10. #JSC2017 @k33g_org SCALACESTCOMMEJS `sbt run` [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info]

    Done updating. [info] Set current project to 00-hello (in build file:/Volumes/data/Dropbox/SCALA-FACILE/ sandbox/00-hello/) [info] Updating {file:/Volumes/data/Dropbox/SCALA-FACILE/sandbox/00-hello/}root-00- hello... [info] Resolving jline#jline;2.14.3 ... [info] Done updating. [info] Compiling 1 Scala source to /Volumes/data/Dropbox/SCALA-FACILE/sandbox/00-hello/ target/scala-2.12/classes... [info] 'compiler-interface' not yet compiled for Scala 2.12.2. Compiling... [info] Compilation completed in 9.912 s [info] Running garden.bots.Hello Hello [success] Total time: 11 s, completed Aug 2, 2017 7:58:39 AM
  11. #JSC2017 @k33g_org SCALACESTCOMMEJS "sbt-revolver" . ├── lib ├── project │

    └── plugins.sbt ├── src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala ├── build.sbt addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.0")
  12. #JSC2017 @k33g_org SCALACESTCOMMEJS Hello sbt ~reStart package garden.bots object Hello

    extends App { println("Hello ") println("I ❤ Scala") } 2. Waiting for source changes... (press enter to interrupt) root-00-hello Hello root-00-hello I ❤ Scala root-00-hello ... finished with exit code 0
  13. #JSC2017 @k33g_org SCALACESTCOMMEJS IDE: Ensime 1/3 http://ensime.org/build_tools/sbt/ mkdir ~/.sbt/0.13/plugins/ pico

    ~/.sbt/0.13/plugins/plugins.sbt addSbtPlugin("org.ensime" % "sbt-ensime" % "1.12.14")
  14. #JSC2017 @k33g_org SCALACESTCOMMEJS IDE: Ensime 2/3 `/projet/build.properties`: sbt.version=0.13.15 ensime.sbt: import

    org.ensime.EnsimeKeys._ ensimeServerVersion in ThisBuild := "2.0.0-M4" ensimeProjectServerVersion in ThisBuild := "2.0.0-M4"