Lua Academy · Oppitunti

DSL-suunnittelun periaatteet Luassa

Valitkaa sisäisen DSL:n (Lua-syntaksi) ja ulkoisen DSL:n (mukautettu jäsennin) välillä.

Oppitunti 1/413 vaihetta

DSL-suunnittelun periaatteet Luassa on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on DSL

Toimialakohtainen kieli (DSL) on tiettyyn ongelma-alueeseen räätälöity minikieli. Luassa sisäiset DSL:t hyödyntävät Luan syntaksia kekseliäiden rajapintojen avulla.

Sisäinen ja ulkoinen DSL

Sisäinen DSL on kelvollista Lua-koodia, joka näyttää toimialakohtaiselta kieleltä. Ulkoinen DSL käyttää omaa syntaksiaan ja vaatii Lualla kirjoitetun jäsentimen.

Miksi Lua DSL-kielille

Luan joustava syntaksi (funktiokutsut ilman sulkeita, kun ainoa argumentti on taulukko tai merkkijono, kaksoispistesyntaksi sekä operaattorien ylikuormitus metametodien avulla) tekee sisäisistä DSL:istä hyvin luontevia.

Funktiokutsu määrittelynä

Lua sallii funktiokutsut ilman sulkeita, kun ainoa argumentti on taulukko tai merkkijonoliteraali. Tämä mahdollistaa deklaratiivistyyliset DSL:t.

task "build" {  -- task("build", {...})
  depends = {"compile", "test"},
  run = function() os.execute("make") end
}

Builder-mallin DSL

Builder kokoaa määrityksiä metodiketjutuksen avulla ja suoritetaan, kun kaikki on valmista.

local query = DB:select("*")
             :from("users")
             :where("age > 18")
             :limit(10)
             :execute()

Määritys-DSL

Asetustiedosto, joka näyttää jäsennellyltä datalta mutta on kelvollista Luaa.

-- config.lua
return config {
  host = "localhost",
  port = 8080,
  debug = true,
  routes = {
    { path="/api", handler="ApiHandler" },
    { path="/web", handler="WebHandler" },
  }
}

Deklaratiivinen tapahtumasidonnan DSL

Käyttäkää taulukkoargumentteja sisältäviä funktiokutsuja deklaratiivisen tapahtumasidontasyntaksin luomiseen.

on("click", "#button") (function(e)
  print("Clicked:", e.target)
end)

Operaattorien ylikuormitus DSL:issä

Metametodien avulla lausekkeet, kuten query.age > 18, voivat rakentaa kyselyolioita arvojen vertaamisen sijaan. Tämä mahdollistaa SQL:n kaltaiset DSL:t.

Sisäisen ja ulkoisen DSL:n valinta

Valitkaa sisäinen DSL, kun ongelma sopii Luan syntaksiin, käyttäjät tuntevat Luan tai nopea iterointi on tarpeen. Valitkaa ulkoinen DSL, kun käyttäjät eivät ole ohjelmoijia, vahva eristys on tarpeen tai syntaksia ei voi sovittaa Luaan.

Luettavuus ensin

DSL:n tärkein arvo on luettavuus. Jos DSL-koodi näyttää hämmentävältä, se ei täytä tarkoitustaan. Testatkaa DSL:ää toimialan käyttäjillä, jotka eivät ole ohjelmoijia.

Työkalutuki

Sisäiset Lua-DSL:t hyötyvät Lua-IDE:n tuesta (syntaksin korostus, automaattinen täydennys). Ulkoisia DSL:iä varten on kirjoitettava omat työkalut (jäsennin, muotoilija, lintteri).

DSL-kysymys

Mikä on sisäinen DSL?

Kertaus: DSL:n suunnitteluperiaatteet

Sisäiset Lua-DSL:t hyödyntävät Luan syntaksia toimialalle ymmärrettävän koodin luomiseen (builderit, deklaratiiviset määritykset, tapahtumasidonnat). Valitkaa sisäinen DSL nopeaan iterointiin, kun käyttäjät tuntevat Luan; valitkaa ulkoinen DSL ohjelmoimattomille käyttäjille tarkoitetuille toimialoille, joissa tarvitaan vahvaa eristystä.

Aloita maksutta

Opi Lua tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
40
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”DSL-suunnittelun periaatteet Luassa” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “DSL-suunnittelun periaatteet Luassa”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”DSL-suunnittelun periaatteet Luassa”?

Valitkaa sisäisen DSL:n (Lua-syntaksi) ja ulkoisen DSL:n (mukautettu jäsennin) välillä. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”DSL-suunnittelun periaatteet Luassa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?

Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. DSL-suunnittelun periaatteet Luassa
  2. Operaattorien ylikuormitus sujuvaa DSL:ää varten
  3. Määritys-DSL:n rakentaminen
  4. Yksinkertainen lausekejäsennin
← Takaisin: Lua Academy