Flatscript este un limbaj si un compilator care genereaza Javascript dintr-un limbaj asemanator Python.

Instalare si constructie

Flatscript este implementat chiar de Flatscript, deci nu este posibil sa-l construiti de la zero.

Trebuie sa-l instalati de la npm inainte de al compila.

npm instalati -g flatscript

Puteti verifica instalarea cu urmatoarea comanda

Caracteristici cheie

Javascript este renumit pentru stilul sau de codare callback-hell. In Flatscript permite dezvoltatorilor sa scrie cod in stiluri sincrone, iar compilatorul il va traduce in cod Javascript asincron.

De exemplu, codul Flatscript, cum ar fi:

pentru intervalul 10 daca i! = 0 setTimeout (%, 1000) console.log (i)

va imprima 0 pana la 9 si va „dormi” timp de 1 secunda intre fiecare imprimare.

Si pentru codul Flatscript, cum ar fi:

fs: require (‘fs’) incercati console.log (fs.readFile (‘a.txt’, %%) + fs.readFile (‘b.txt’, %%)) catch e console.error (e) console .log („sfarsit”)

va functiona in aceasta ordine

  • cititi „a.txt”
  • cititi „b.txt”
  • concateneaza continutul lor
  • iesire la consola

Daca apare o eroare, cum ar fi fisierul care nu a fost gasit, fluxul de lucru va fi intrerupt si eroarea va fi prinsa si trimisa la stderr. Un mesaj „sfarsit” va fi difuzat in cele din urma.

Aceste caracteristici sunt o alternativa a asteptarii ES7. Jetonul lexical% si %% indica faptul ca argumentul ar trebui sa fie un callback al carui corp va fi generat de compilator din ultima parte a arborelui de sintaxa.

Pentru a citi o lista de fisiere si a stoca continutul acestora, codul Flatscript este similar

fs: require (‘fs’) fisiere: [‘a.txt’, ‘b.txt’, ‘c.txt’] content: [] incercati pentru i range files.length content.push (fs.readFile (files [ i], %%). toString ()) console.log (‘content’, content) catch e console.error (e) console.log (‘end’)

Sau mai simplu, sa utilizati sintaxa conductei Flatscript, cum ar fi (folosind operatorul de mapare a conductelor | 🙂

fs: require (‘fs’) fisiere: [‘a.txt’, ‘b.txt’, ‘c.txt’] incercati console.log (‘continut’, fisiere |: fs.readFile ($, %%) .toString ()) catch e console.error (e) console.log (‘end’)

Pentru a incapsula acest lucru intr-o functie asincrona obisnuita (cum ar fi o functie asincrona in ES7)

fs: require (‘fs’) func readFiles (fileList, %%) return fileList |: fs.readFile ($, %%). toString () incercati console.

mamadas retro videos incesto online
porno español abuelas jovencitasxxx
videos de follar tetas en la playa
la engaña para follar madres españolas follando con hijos
peliculas porno de incesto en español cincuentonas
paja en el coche viejas tetonas
porno gay guarro lesbianas incesto
pilladas meando tias cachondas
follando en el trastero pilladas meando
mamada a dos bocas porno gay trios
abuelas tragando leche chicas corriendose
pilladas pajeandose porno amater español
porno gay trios lesbianas preciosas
realincest maduras masturbandose
sexo español gratis folladas extremas
colegialas anal coños maduros
descargar peliculas porno completas come pollas
maduras en la playa mujeres normales desnudas
vecina mirona pirno
incesto abuelas follando en casa

log (‘content’, readFiles ([‘a.txt’) , ‘b.txt’, ‘c.txt’], %%)) catch e console.error (e) console.log (‘end’)

Alte caracteristici

Sintaxa indicata prin indentare

Probele de cod

# defineste o functie care calculeaza numarul fibonacci func fib (n) daca n <= 1 returneaza 1 return fib (n – 1) + fib (n – 2)

Ouput

functia $ Rfib ($ Rn) {if (($ Rn <= 1)) {return 1; } return ($ Rfib (($ Rn – 1)) + $ Rfib (($ Rn – 2))); }

Flatscript va face, de asemenea, unele probleme de nume.

Este usor sa impartiti o linie lunga in altele mai scurte, lovind intoarcere dupa jetoane adecvate. Probele de cod

[‘this’, ‘is’, ‘a’, ‘long’, ‘list’] callFunction (‘cu’, ‘mai multe’, ‘argumente’) x: a + b

Functie anonima intr-un mod usor

Functiile anonime sunt scrise in acest fel fara cuvinte cheie

(parametri): functie-corp

Probele de cod

fs.read (‘unele-fisier’, (eroare, continut): console.log (content.toString ()))

Iesire

fs.read (“unele-fisier”, (functie ($ Rerror, $ Rcontent) {console.log ($ Rcontent.toString ());}));

Convertiti codul sincron in asincron

Intr-un apel catre o functie care accepta un apel de apel cu parametri (eroare, rezultat), argumentul de apel de apel ar putea fi reprezentat ca %%, iar ultimele expresii si instructiuni vor deveni corpul apelului de apel. Fostul si din urma relatie este determinata de arborele de sintaxa, de exemplu, in operatia binara a + b, b este aceasta din urma a unui. Exemplu mai detaliat:

func citire (fisierA, fisierB, %%) returneaza fs.read (fisierA, %%) + fs.read (fisierB, %%)

Cod JS generat ca (demanglat)

functie citita (fisierA, fisierB, $ racb) {fs.read (fisierA, (functie (err, $ ar_0) {daca (err) returneaza $ racb (err); fs.read (fisierB, (functie (err, $ ar_1 ) {if (err) return $ racb (err); return $ racb (null, $ ar_0 + $ ar_1);}));})); }

In mod similar, intr-un apel catre o functie care accepta un apel de apel fara parametri, apelul de apel ar putea fi reprezentat ca%. De exemplu

console.log (0) setTimeout (%, 1000) console.log (1) setTimeout (%, 1000) console.log (2)

Cod JS generat ca

console.log (0); setTimeout ((function () {console.log (1); setTimeout ((function () {console.log (2);}), 1000);}), 1000);

Introduceti o lista intr-un rezultat

Foloseste o conducta pentru a itera pe o lista. Operatorii de conducte sunt |: si | ?. Prima reprezinta o operatiune de mapare, in timp ce cea de-a doua reprezinta o filtrare. In cadrul unei conducte, utilizati $ pentru a face referire la element si $ i pentru index.

Esantion de cod

x: [1, 1, 2, 3, 5, 8, 13] console.log (x |: $ * $) console.log (x |? $% 3 = 1) console.log (x |: $ i % 2 = 0) console.log (x |? $ I% 2 = 0)

Rezultate

[1, 1, 4, 9, 25, 64, 169] [1, 1, 13] [adevarat, fals, adevarat, fals, adevarat, fals, adevarat] [1, 2, 5, 13]

Conducta ar putea fi utilizata impreuna cu apeluri asincrone regulate.

Esantion de cod

func readFiles (fileList, %%) fileContent: fileList |: fs.read ($, %%) return fileContent.join (”)

Iesire

functie $ RreadFiles ($ RfileList, $ racb) {var $ RfileContent; var $ ar_0 = (function ($ list) {function $ next ($ index, $ result) {var $ key = null; if ($ index === $ list.length) {$ RfileContent = $ result; return $ racb (null, $ RfileContent.join (“”));} else {var $ element = $ list [$ index]; fs.read ($ element, (functia ($ cb_err, $ ar_1) {if ($ cb_err) returneaza $ racb ($ cb_err); $ result.push ($ ar_1); returneaza $ next ($ index + 1, $ result);}));}} $ next (0, []);}) ($ RfileList) ; }

Utilizati compilatorul

Alerga

Flatscript va citi codul sursa din stdin sau un fisier (cu optiunea -i) si va imprima Javascript prin stdout sau intr-un fisier (cu optiunea -o). Modalitatile obisnuite de a compila

flsc <source.fls> output.js flsc -i source.fls -o output.js

Sau introduceti programul in nod

flsc <sursa.fls | nod flsc -i sursa.fls | nodul

FAQ

De ce compilatorul se plange de nume precum „cere” / „document” / „fereastra” nedefinit?

Flatscript verifica definitia numelui in momentul compilarii si nu este posibil sa se utilizeze niciun nume care nu este definit sau care nu este marcat ca extern.

Puteti declara nume externe prin optiunea -e, cum ar fi

flsc -e document -e window -i client / source.fls> client / output.js document flsc -e: window -i client / source.fls> client / output.js flsc -e require -i server / source.fls -o server / output.js

Sau folosind declaratia externa in fisierul sursa:

extern require fs: require (‘fs’) console.log (fs.readFile (‘a.txt’, %%))

Cum as putea folosi jQuery in Flatscript?

Utilizati jQuery identificatorul in loc de $ deoarece $ inseamna elementul listei curente in contextul conductei, cum ar fi

Pentru mai multe informatii

Va rugam sa cititi paginile wiki.