De la Zero la Hello World din Scala

Scala este una dintre cele mai atractive limbi de programare aflate chiar acum. Există o mulțime de hype în jurul valorii de el și programatori la nivel mondial sunt recunosc public ca fiind posibilul lucru mare în programare. Iata de ce. Scala este despre programarea funcțională într-un context orientat pe obiecte. Încearcă să profite la maximum de cele două lumi și să le combine într-un limbaj foarte eficient, inteligent și relativ ușor de înțeles. Chiar acum este lider în renașterea de astăzi a limbajelor de programare funcționale.

Recent am terminat cursul Scala de la Martin Odersky și mi-a fost foarte greu să-mi dau seama cum să încep. Știți, primul pas atunci când doriți să începeți codificarea, dar nu știți ce instrumente aveți la dispoziție, ce IDE să utilizați sau ce unitate de testare trebuie să alegeți. Acest tutorial va fi despre tine, noul venit la Scala, pregătindu-ți mediul de dezvoltare pentru a putea începe mai ușor.


Piesele puzzle-ului

Iată piesele de puzzle pe care le vom vorbi în această lecție, nu ezitați să treceți peste cele pe care le cunoașteți deja:

  • Instrumentele de construire simple (SBT) - acesta este instrumentul care generează proiecte, dependențe etc. pentru Scala
  • NetBeans cu pluginuri Scala - cum să integrați Scala cu NetBeans
  • Salut Lume - vom crea primul fișier sursă Scala
  • Scalatest - cadrul de testare unitate recomandat pentru Scala

Vom lua fiecare subiect pe listă și o vom discuta la un nivel începător și, în sfârșit, vom vedea cum toate aceste piese lucrează împreună.


Cerințe software

Înainte de a începe, asigurați-vă că aveți cel mai recent SDK Java instalat pe computer. Din moment ce Scala rulează pe Java Virtual Machine (JVM), SDK este necesar. Restul subiectelor din lista noastră pot necesita SDK-ul Java, fie direct, fie indirect, așa că este bine să aveți.

Tu nu e nevoie pentru a avea instalat Scala. Vom vorbi despre acest lucru în capitolul următor.


Instrumentele de construire simple a lui Scala (SBT)

Dacă sunteți un dezvoltator PHP, probabil că sunteți familiarizat cu compozitorul. Dacă sunteți un guru Ruby, știți și iubiți Bundler. Dacă programați într-o altă limbă, sunt sigur că există și un manager de pachete pentru acest lucru.

SBT este similar cu managerii de pachete de mai sus, dar, în timp ce Compozerul cere să aveți preinstalat PHP în același mod în care Bundler are nevoie de Ruby, Scala nu trebuie să fie instalat pe sistem înainte de a putea utiliza SBT. De fapt, versiunea Scala specifică pe care doriți să o utilizați pentru proiectul dvs. poate fi pur și simplu specificată ca o dependență în SBT. Vă puteți întreba cum este posibil acest lucru. După cum am menționat mai înainte, Scala rulează pe JVM; practic, este doar o bibliotecă Java. Pachetele pentru Scala pot fi, de asemenea, simple fișiere .jar. Deci, SBT, în sine, este doar un program Java. Aveți nevoie doar de Java, pe care, probabil, o aveți oricum.

Există multe moduri diferite în care puteți aborda instalarea SBT. Din motive transfrontaliere între Linux, Mac și Windows, modul meu preferat de a instala SBT este doar să iau arhiva, să o introduc într-un director, să o extrag în directorul meu de acasă și să adaug calea către sistem.

O cale independentă de platformă pentru a instala SBT

Descărcați ultimul SBT stabil din depozitul oficial. Căutați un dosar fără a "Beta" sau "R" sau "M" la sfarsit. Aceasta va fi versiunea stabilă. În momentul elaborării acestui tutorial, ultima versiune stabilă este 0.12.3.

Arhiva conține o SBT director din interiorul acestuia. Doar extrageți acest lucru în locația dvs. preferată. Prefer să fiu undeva în directorul meu de acasă / Home / csaba / Programare / Scala / SBT

Apoi, adăugați calea spre directorul SBT bin, la variabila PATH. În sistemele asemănătoare UNIX, dacă utilizați Bash, adăugați o linie ca aceasta la dvs. ~ / .Bash_profile sau ~ / .Bashrc fişier:

PATH = $ PATH: $ HOME / Programare / Scala / sbt / bin export PATH

$ HOME variabila, de obicei, indică spre directorul dvs. de acasă. Puteți reutiliza în fișierele de configurare. Utilizatorii de Windows pot avea o altă variabilă pentru aceasta. Nu uitați export comandă pe linia a doua, în caz contrar CALE variabila va fi disponibilă numai în interiorul fișierului de configurare.

Acum, verificați dacă instalarea dvs. SBT a avut succes. Deschideți o consolă sau un instrument de linie de comandă și tastați:

$ sbt --version sbt versiunea lansatorului 0.12.2

$ semnul este promptul Bash, restul este comanda pe care o veți introduce. După cum puteți vedea, am instalat versiunea 0.12.2.

Pentru alte modalități de a instala SBT, puteți verifica documentația oficială de configurare.

Crearea unui nou proiect

Creați un dosar în care doriți ca viitorul dvs. cod să fie, deschideți o consolă, modificați directorul nou creat și pur și simplu executați comanda SBT.

csaba @ csaba ~ / Personal / Programare / NetTuts / de la zero la Hello World în Scala / Surse $ SBT [info] Se încarcă plugin-uri la nivel mondial de la /home/csaba/.sbt/plugins [info] Actualizarea file: / home / csaba / .sbt / plugins / default-e430ed ... [info] Soluționarea problemelor org.scala-SBT # precompilată-2_10_0; 0.12.2 ... [info] descărcarea http://repo.typesafe.com/typesafe/ivy-releases/org. scala-sbt / actions / 0.12.2 / jars / actions.jar ... [info] [SUCCESSFUL] org.scala-sbt # actions; 0.12.2! actions.jar (3648ms) [...] [SUCCESSFUL] org.scala-tools.testing # test-interface; 0.5! Test-interface.jar (239ms) [info] Efectuat actualizarea. [info] Setați proiectul curent la fișierul implicit-f502c6 (în fișierul build: / home / csaba / Personal / Programare / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Surse)

Rețineți că proiectul curent a fost setat la dosarul în care vă aflați și că consola sa modificat. Acum vă aflați în interiorul consolei SBT. Puteți părăsi această consolă apăsând CTRL + d sau CTRL + c sau eliberând comanda Ieșire.

În această consolă, puteți spune SBT să facă multe lucruri. Doar apăsați TAB de două ori și confirmați cu y pentru a vedea lista completă a comenzilor disponibile.

Configurarea construirii pe bază de proiect

Utilizarea setărilor de la nivel de sistem sau de utilizator pentru toate proiectele dvs. poate să nu fie cea mai bună opțiune. Fiecare proiect este diferit, are nevoie de dependențe diferite, are un nume diferit și așa mai departe. Pentru a spune SBT despre astfel de informații, trebuie să creăm un fișier numit build.sbt. Acesta trebuie plasat în directorul rădăcină al proiectului, pe care îl puteți găsi pe ultima linie, în exemplul anterior.

Limba folosită în aceste fișiere este un DSL asemănător cu sintaxa Scala, dar mult mai puțin complexă. Pentru a vă păstra simplu, veți defini de obicei câteva valori precum numele și versiunea sau dependențele proiectului, cum ar fi versiunile Scala sau SBT pe care să le utilizați. Numele acestor valori sunt numite "chei". Vom lucra cu câțiva dintre ei. Consultați pagina Keys.scala pentru o listă completă a cheilor.

Pentru proiectul nostru vom specifica doar patru chei. Numele lor le fac destul de explicative:

nume: = "Hellow World" versiune: = "1.0" scalaVersion: = "2.10.1" sbtVersion: = "0.12.3"

Fii foarte atent cu liniile goale din fișierul de configurare. Fiecare definitie cheie-valoare trebuie separata printr-o linie goala. Acum fugi Actualizați sbt în directorul proiectului.

$ sbt update [info] Încărcarea pluginurilor globale din /home/csaba/.sbt/plugins [info] Setați proiectul curent în Hellow World (în fișierul de construcție: / home / csaba / Personal / Programare / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Surse /) [info] Actualizarea file: / home / csaba / Personal / Programare / NetTuts / De la% 20Zero% 20to% 20Hello% 20World%% 20in 20Scala / Surse / default-f502c6 ... [info] Soluționarea org.scala-lang # scala-library; 2.10.1 ... [info] Efectuarea actualizării. [succes] Timp total: 1 s, finalizat 13 mai 2013 8:17:54 PM $ sbt [info] Se încarcă pluginuri globale de la /home/csaba/.sbt/plugins [info] Setați proiectul curent la Hellow World fișier: / home / csaba / Personal / Programare / NetTuts / De la% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Surse /)> SBT-versiune [info] 0.12.3>-versiune timpanică [info] 2.10.1 > ieșire

După cum puteți vedea, Scala 2.10.1 a fost selectată și descărcată automat dacă este necesar. Am actualizat, de asemenea, SBT la 0.12.3 on-the-fly. În cele din urmă, veți observa că acesta numește proiectul după nume când se încarcă: "Setați proiectul curent în Hellow World".

Structura structurii convențiilor în SBT

Chiar dacă puteți pune pur și simplu toate fișierele sursă în directorul rădăcină al proiectului, SBT recomandă și utilizează convențional o structură de directoare similară cu Maven. Să actualizăm directoarele noastre astfel încât să pară arborele de mai jos. Ar trebui să creați numai src directorul și copiii săi, restul au fost generați când am jucat cu comenzile SBT. Dacă nu au fost, nu vă faceți griji, sunteți interesat doar de src director.

├── proiect │ └── țintă │ └── config-clase ├── src │ ├── principal │ │ ├── resurselor │ │ └── timpanică │ └── încercare │ ├── resurse │ └─ ─ scala └── țintă

Integrarea Scala, SBT și NetBeans

Acum, că am învățat elementele de bază ale SBT, avem nevoie de un IDE pentru a scrie codul nostru. Dacă preferați să folosiți editori simpli, cum ar fi textul Sublime, puteți face acest lucru și sări peste acest pas.

NetBeans a avut sprijin pentru Scala cu mult înainte de SBT. Există un plugin numit "nbscala" care poate crea proiecte Scala pentru NetBeans și poate folosi limba Scala instalată pe sistem. În prezent, acest plugin se îndreaptă spre SBT și, în cele din urmă, va avea capacitatea de a crea și gestiona proiecte SBT.

În prezent, SBT și NetBeans se integrează destul de bine. Singurul lucru pe care trebuie să-l creați manual la momentul redactării acestui articol este proiectul inițial SBT. Ulterior, NetBeans se poate integra cu ea frumos.

Instalarea suportului Scala în NetBeans

Să deschidem NetBeans, du-te la Instrumente / plugins, selectează Plugin-uri disponibile și derulați până la litera S. Verificați toate pluginurile legate de Scala, faceți clic pe Instalare și lăsați-l să instaleze plugin-urile cu toate dependențele necesare.


Dacă sunteți curios de modul în care este scris acest plugin, puteți verifica depozitul lui Github.

Instalarea suportului NetBeans în SBT

Da, l-ai citit corect, SBT are propriul sistem de pluginuri care poate genera proiecte NetBeans pentru tine. Trebuie doar să verificați un depozit git și să îl publicați la nivel local. Schimbați-vă într-un director unde doriți ca plugin-ul dvs. să fie verificat și instalat, apoi executați următoarele comenzi:

git clone [email protected]: dcaoyuan / nbsbt.git cd nbsbt sbt curat compilați public-local

Bine, aproape că am terminat. Avem plugin-ul, acum trebuie să-i spunem SBT să o folosească. Puteți face acest lucru pe proiect dacă doriți, dar vă recomandăm să îl adăugați la setările SBT ale utilizatorului: ~ / .Sbt / plugins / plugins.sbt

~ se referă la directorul dvs. de acasă, ar trebui să aveți deja un director numit .SBT în el (notați punctul ca primul caracter). Puteți sau nu să aveți a Plugin-uri directorul, dacă nu, creați-l și apoi creați-l plugins.sbt fişier. Acum adăugați următoarele:

addSbtPlugin ("org.netbeans.nbsbt"% "nbsbt-plugin"% "1.0.2")

Asta este, acum, SBT-ul dvs. poate genera proiecte NetBeans pentru tine atunci când rulați NetBeans comandă în consola SBT. În mod alternativ, în NetBeans, poți pur și simplu deschide (nu proiect nou, dar deschide) orice proiect SBT și va genera automat lucrurile NetBeans pentru tine.


Apoi, toate dependențele de proiect vor fi actualizate și NetBeans comanda va fi rulată într-o consolă SBT, în interiorul NetBeans.


Acum puteți vedea mai multe derulări text pe ecran în funcție de dependențele care trebuie instalate și ar trebui să vedeți că NetBeans comanda a fost rulată automat pentru noi.

În panoul din stânga, pe browser de proiect puteți executa chiar comenzi SBT de bază făcând clic dreapta pe proiect și executați Reîncarcă, Curat, Compila si asa mai departe.


Hello World în Scala

Acum, acesta nu este un tutorial pentru a învăța Scala. Vom scrie doar un cod foarte simplu, o clasică Hello World. Deci, puteți continua și extindeți proiectul Scala și în intrarea "Scala Packages", faceți clic dreapta pe și selectați Obiect nou -> Scala. Dă-i un nume, ceva de genul "HelloWorld" va face bine. Apoi, în interiorul acestuia, introduceți în următorul cod:

obiect HelloWorld def principal (args: Array [String]) = println ("Hello World!")

Dacă sunteți complet necunoscut cu Scala, un obiect va rula automat și o metodă numită principal va fi privit. Definiția metodei este doar o linie de imprimare simplă Salut Lume.

Du-te la consolă SBT pentru acest proiect - dacă ați închis-o din greșeală, faceți clic dreapta pe proiectul Scala din panoul din stânga și selectați Deschideți consola sbt. Acum, tastați alerga în consola, pentru a rula programul.



Adăugarea de teste

Primul pas este să instalați Scalatest astfel încât să avem un cadru de testare. Cel mai simplu mod de a face acest lucru este să ne editați build.sbt fișier și adăugați următoarea linie; amintiți-vă că trebuie să lăsați o linie goală între fiecare linie.

bibliotecaDependențe + = "org.scalatest" %% "scalatest"% "1.9.1"% "test"

Acum, în consola dvs. SBT puteți să lansați o actualizare (opțional) și să rulați Test comanda. Nu avem încă teste, deci comanda nu ar trebui să eșueze.


Crearea primului nostru test va fi destul de ușoară. Singurul lucru pe care trebuie să îl știi este că trebuie să fie în src / test / timpanică pliant. Sau dacă vă extindeți Scala pachete de testare în vizualizatorul de proiect și faceți clic dreapta pe , puteți selecta Nou -> Clasa Scala și creați unul cu numele "ExampleSuite" și adăugați codul de mai jos:

metoda de import org.scalatest.FunSuite ExampleSuite se extinde FunSuite test ("test 2 valorile așteptate sunt egale") assert (2 === 2) test ("valorile testului 2 sunt diferite și nu reușesc") assert (2 == = 3)

Rețineți că NetBeans poate avea câteva probleme cu rularea testelor dvs., deoarece pluginul Scala încă nu este complet. Dar nu intră în panică, puteți rula testele din consola SBT.

Testul importează doar suita de testare Scalatest FunSuite (în cazul în care "Fun" vine de la funcțional) și rulează două teste. După cum ați putea afla din cod, primul va trece, cel de-al doilea va eșua.


Dacă, din anumite motive, SBT refuză să vă compileze testele, închideți consola în NetBeans, faceți clic dreapta pe proiect și selectați Reîncărcați proiectul sbt. Acest lucru va remedia problema și testele vor funcționa conform așteptărilor.


Gândurile finale

Acolo te duci! Tocmai ați terminat primii pași spre învățarea Scalei. Sper că acest tutorial v-a ajutat să înțelegeți mai bine cum să începeți. Dacă, în loc să folosim Netbeans, care este IDE-ul meu preferat, puteți face și o căutare Google pentru a găsi o documentație online destul de completă despre utilizarea SBT & Scala cu Eclipse, dacă asta preferați.

Vă mulțumim pentru lectură.

Cod