Kui olete lugenud ajaveebipostitusi, häkkerite uudislõike, oma lemmikarendajaid säutsunud või kuulanud taskuhäälingusaateid, siis olete ilmselt kuulnud Elixiri programmeerimiskeelest. Keele lõi avatud lähtekoodiga maailmas tuntud arendaja José Valim. Võite teda tunda Ruby on Rails MVC raamistikust või väljatöötatud ja lihtsate vormidega rubiinkividest, mille kallal tema ja tema Plataformateci kaastöötajad on viimastel aastatel töötanud.
José Valimi sõnul sündis eliksiir aastal 2011 . Tal tekkis idee uus keel üles ehitada heade vahendite puudumise tõttu rubiinimaailma samaaegsusega seotud probleemide lahendamiseks. Sel ajal, olles veetnud aega samaaegsuse uurimises ja keskendunud keelte levitamises, leidis ta kaks talle meeldivat keelt - Erlang ja Clojure, mis töötavad JVM-is. Talle meeldis kõik, mida ta nägi erlangi keeles (Erlang VM), ja ta vihkas asju, mida ta ei näinud, näiteks polümorfismi, metaprogrammeerimist ja keele laiendamise atribuute, milles Clojure oskas. Niisiis sündis Elixir seda silmas pidades, et tal oleks Clojure'ile alternatiiv ja dünaamiline keel, mis töötab Erlangi virtuaalses masinas hea laiendatavusega.
Eliksiir kirjeldab ennast dünaamilise, funktsionaalse keelena, millel on muutumatu olek ja näitlejapõhine lähenemine samaaegsusele, mis on mõeldud skaleeritavate hooldatavad rakendused lihtsa, kaasaegse ja korraliku süntaksiga. Keel töötab virtuaalses masinas Erlang, mis on lahingukindel, suure jõudlusega ja hajutatud virtuaalne masin, mis on tuntud madala latentsuse ja tõrketaluvuse omaduste poolest.
Enne kui näeme mõnda koodi, tasub öelda, et Elixir on olnud kogukonna poolt aktsepteeritud mis kasvab. Kui soovite täna eliksiiri õppida, leiate sealt hõlpsasti raamatuid, raamatukogusid, konverentse, kohtumisi, taskuhäälingusaateid, ajaveebipostitusi, infolehti ja igasuguseid õppeallikaid, nagu ka Erlangi loojad aktsepteerisid.
Vaatame koodi!
Eliksiiri installimine on ülilihtne kõigil peamistel platvormidel ja on enamikus neist ühe liiniga.
Elixir on Arch Linuxis saadaval ametlike hoidlate kaudu:
pacman -S elixir
Eliksiiri installimine Ubuntu on natuke kaval. Kuid sellegipoolest on see piisavalt lihtne.
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb apt-get update apt-get install esl-erlang apt-get install elixir
Installige Elixir OS X-i kasutades Homebrew .
brew install elixir
Pärast installi lõppu on aeg oma kest avada. Kui soovite Elixiris areneda, veedate palju aega oma kestas.
Eliksiiri interaktiivne kest ehk IEx on REPL - (Read Evaluate Print Loop), kus saate eliksiiri uurida. Seal saate väljendeid sisestada ja neid hinnatakse, andes teile kohest tagasisidet. Pidage meeles, et teie koodi on tõepoolest hinnatud ja seda pole kompileeritud, seega veenduge, et te ei käitaks shellis profileerimist ega võrdlusaluseid.
Enne IEx REPLi käivitamist peate teadma olulist asja - kuidas sellest väljuda.
Ilmselt olete harjunud lööma CTRL+C
terminalis töötavate programmide sulgemiseks. Kui tabasite CTRL+C
IEx REPL-is avate menüü Break. Vaheaja menüüs olles saate vajutada CTRL+C
uuesti, et sulgeda kest ja vajutada ka a
Ma ei hakka vahetundide menüü funktsioonidesse sukelduma. Kuid vaatame mõnda IExi abistajat!
IEx pakub hulga abistajad , et loetleda need kõik, tippige: h()
.
Ja seda peaksite nägema:
Need on ühed minu lemmikutest, ma arvan, et neist saavad ka teie.
h
nagu me just nägime, prindib see funktsioon abistaja teate.h/1
mis on sama funktsioon, kuid nüüd ootab see ühte argumenti.Näiteks kui soovite näha String
dokumentatsiooni strip/2
meetodit, mida saate hõlpsalt teha:
Ilmselt teine kõige kasulikum IExi abistaja, mida kasutate Elixiris programmeerimisel, on c/2
, mis kompileerib antud eliksiirifaili (või loendi) ja eeldab teise parameetrina teed kompileeritud failide kirjutamiseks .
Oletame, et töötate ühes http://exercism.io/ Elixiri harjutustest, Anagrami harjutusest.
Nii et olete rakendanud Anagram
moodul, mille meetod on match/2
failis anagram.exs. Nagu hea arendaja olete, olete kirjutanud mõned spetsifikatsioonid, et kõik toimiks ka ootuspäraselt.
Teie praegune kataloog näeb välja selline:
Nüüd peate testide käivitamiseks Anagrami mooduli käivitamiseks / kompileerimiseks.
Nagu äsja nägite, kutsuge faili koostamiseks lihtsalt elixir
käivitatav fail edastatakse argumendina faili, mida soovite kompileerida.
Oletame nüüd, et soovite käivitada IEx REPL-i koos seansi kontekstis ligipääsetava Anagrami mooduliga. On kaks tavaliselt kasutatavat valikut. Esimene on see, et saate faili nõuda, kasutades valikuid -r
, midagi sellist iex -r anagram.exs
. Teise saate koostada otse IExi seansist.
sõlm js mis see on
Lihtne, just nii!
Ok, mis siis, kui soovite mooduli uuesti kompileerida? Kas peaksite IExist väljuma, selle uuesti käivitama ja fail uuesti kompileerima? Ei! Kui teil on hea mälu, mäletate, et kui loetlesime kõik IEx REPLis saadaolevad abimehed, nägime midagi uuesti kompileerimise käsu kohta. Vaatame, kuidas see töötab.
Pange tähele, et seekord edastasite argumendina mooduli enda, mitte faili tee.
Nagu nägime, on IExil veel palju kasulikke abilisi, mis aitavad teil õppida ja paremini mõista, kuidas Elixir programm töötab.
Numbreid on kahte tüüpi. Suvalised täisarvud ja ujukomaarvud.
Täisarvud saab kirjutada kümnendkoha baasi, kuueteistkümnendkoha, kaheksanda ja kahendarvuna.
Nagu Rubiin , saate suurte arvude kirjutamisel kolme joonega rühmade eraldamiseks alakriipsuga. Näiteks võite saada õiguse sajale miljonile niimoodi:
100_000_000
Kaheksas:
0o444
Kuueteistkümnendkoht:
0xabc
Binaarne:
0b1011
Põrandad on IEEE 754 topelttäpsusega. Neil on 16 numbrit täpsust ja maksimaalne eksponent on umbes 10308.
Ujukid kirjutatakse komakohaga. Enne ja pärast punkti peab olema vähemalt üks number. Võite lisada ka lõpp-eksponendi. Näiteks 1.0, 0.3141589e1 ja 314159.0-e.
Aatomid on konstandid, mis tähistavad nimesid. Need on muutumatud väärtused. Kirjutate aatomi, millel on juhtiv käärsool :
ja tähtede, numbrite, alakriipsude ja märkide jada @
. Võite need kirjutada ka juhtkooloniga :
ja meelevaldne märkide jada, mis on ümbritsetud jutumärkidega.
Aatomid on väga võimas tööriist, neid kasutatakse nii erlangi funktsioonide kui ka klahvide ja eliksiiri meetodite viitamiseks.
Siin on mõned kehtivad aatomid.
:name, :first_name, :'last name', :===, : [email protected] _question?
Loomulikult on tõeväärtused tõesed ja valed väärtused. Kuid nende juures on tore asi päeva lõpus, nad on lihtsalt aatomid.
Vaikimisi on eliksiiri stringid UTF-8 nõuetele vastav. Nende kasutamiseks võib olla suvaline arv tähti, mis on ümbritsetud '
või '
. Samuti võite stringi sees olla interpoleeritud väljendeid ja põgenenud märke.
Pange tähele, et üksikud tsiteeritud stringid on tegelikult kahendfailide loend.
Funktsionaalse keelena on Elixiril põhitüübina anonüümsed funktsioonid. Lihtne viis funktsiooni kirjutamiseks on fn (argument_list) -> body end
. Kuid funktsioonil võib olla mitu keha, millel on mitu argumentide loendit, valveklausleid jne.
Dave Thomas, filmis Eliksiiri programmeerimine raamat, soovitab meil mõelda, et fn… end on jutumärgid, mis ümbritsevad stressi literaali, kus stringi väärtuse tagastamise asemel tagastame funktsiooni.
kuidas luua erakapitali kinnisvarafond
Tuple on muutumatu indekseeritud massiiv. Nad on kiiresti tagasi oma suuruse ja aeglased lisama uusi väärtusi muutumatu olemuse tõttu. Tupple'i värskendamisel loote tegelikult täiesti uue koopia ise.
Massiivi tagasiväärtusena kasutatakse väga sageli hulgi. Eliksiiris kodeerides näete seda sageli {:ok, something_else_here}
.
Nii kirjutame duplika: {?a,?b,?c}
.
Ma ei suuda selgitada kõike, mida peate mustrite sobitamise kohta teadma, kuid see, mida kavatsete lugeda, hõlmab paljusid asju, mida peate alustamiseks teadma.
Eliksiir kasutab =
tikuoperaatorina. Selle mõistmiseks peame omamoodi õppima, mida me teame =
teistes traditsioonilistes keeltes. Traditsioonilistes keeltes on võrdseks operaatoriks määramine. Elixiris on võrdsed operaatorid mustrite sobitamiseks.
Nii töötab see vasakpoolses servas. Kui need on muutujad, on need seotud parempoolse küljega, kui need pole muutujad, püüab eliksiir neid sobitada parema käega.
Eliksiir pakub viisi, kuidas mustri sobitamine sundida alati vasakus servas asuvat muutujat, tihvtioperaatorit.
Elixiris näevad loendid välja nagu massiivid, nagu me seda teistest keeltest teame, kuid mitte. Loendid on seotud struktuurid, mis koosnevad peast ja sabast.
Märksõnaloendid on Tuple paaride loend.
Kirjutate need lihtsalt loenditena. Näiteks: [{: üks, 1}, 2, {: kolm, 3}]. Loendite määratlemiseks on otsetee, see näeb välja järgmine: [üks: 1, kolm: 3].
Üksuse märksõnaloendist hankimiseks võite kasutada kas järgmist:
Keyword.get([{:one, 1}, 2, {:three, 3}], :one)
Või kasutage otseteed:
[{:one, 1}, 2, {:three, 3}][:one]
Kuna väärtuse hankimisel on märksõnaloendid aeglased, on see kulukas toiming, nii et kui salvestate kiiret juurdepääsu vajavaid andmeid, peaksite kasutama kaarti.
Kaardid on tõhus võti / väärtuspaaride kogu. Võtmel võib olla mis tahes väärtus, mida soovite võtmeks, kuid see peaks tavaliselt olema sama tüüpi. Erinevalt märksõnaloenditest lubab Maps antud võtme jaoks ainult ühe sisestuse. Need on kasvades tõhusad ja neid saab kasutada Elixiri mustri sobitamisel üldkasutatavatel kaartidel, kui vajate assotsiatiivset massiivi.
Kaardi kirjutamiseks toimige järgmiselt.
%{ :one => 1, :two => 2, 3 => 3, 'four' => 4, [] => %{}, {} => [k: :v]}
Eliksiir on vinge, kergesti mõistetav, selle ümber on lihtsad, kuid võimsad tüübid ja väga kasulikud tööriistad, mis aitavad teil õppima asumisel. Selles esimeses osas oleme käsitlenud mitmesuguseid andmetüüpe, millele Elixir programmid on üles ehitatud, ja neid töötavaid operaatoreid. Hilisemates osades sukeldume sügavamalt Elixiri maailma - funktsionaalsesse ja samaaegsesse programmeerimisse.
Seotud: ClojureScripti avastamine esiosa arendamiseks