Megosztás a következőn keresztül:


Fogalmak és terminológia (funkcionális átalakítás) (LINQ–XML)

Ez a cikk bemutatja a tiszta funkcionális átalakítások fogalmait és terminológiáját. Az adatok átalakításának funkcionális átalakítási megközelítése olyan kódot eredményez, amely gyakran gyorsabb programozást, kifejezőbb és könnyebben hibakeresést és karbantartást eredményez, mint a hagyományos, imperatív programozás.

Vegye figyelembe, hogy az ebben a szakaszban található cikkek nem célja a funkcionális programozás teljes körű magyarázata. Ezek a cikkek inkább azokat a funkcionális programozási képességeket azonosítják, amelyek megkönnyítik az XML átalakítását egyik alakzatról a másikra.

Mi a tiszta funkcionális átalakítás?

A tiszta funkcionális átalakítás során a tiszta függvényeknek nevezett függvények egy halmaza határozza meg, hogyan alakíthat át strukturált adatokat az eredeti formájából egy másik formába. A "tiszta" szó azt jelzi, hogy a függvények összeírhatók, ami megköveteli, hogy a következők legyenek:

  • Önállóan, hogy szabadon rendezhetők és átrendezhetők anélkül, hogy összefonódnának vagy összefonódnának a program többi részével. A tiszta átalakítások nem ismerik és nem befolyásolják a környezetüket. Vagyis az átalakítás során használt függvények nem rendelkeznek mellékhatásokkal.
  • Állapot nélküli, így ha ugyanazt a függvényt vagy adott függvénykészletet ugyanazon a bemeneten hajtja végre, mindig ugyanazt a kimenetet fogja eredményezni. A tiszta átalakításoknak nincs memóriájuk az előző használatukról.

Fontos

Az oktatóanyag további részében a "tiszta függvény" kifejezés általános értelemben a programozási megközelítést jelöli, nem pedig egy adott nyelvi funkciót.

Vegye figyelembe, hogy a tiszta függvényeket metódusként kell implementálni a C#-ban és a Visual Basicben.

A tiszta függvényeket nem szabad összekeverni a C++-ban használt tiszta virtuális módszerekkel. Ez utóbbi azt jelzi, hogy a tartalmazó osztály absztrakt, és nincs megadva metódustörzs.

Funkcionális programozás

A funkcionális programozás olyan programozási megközelítés, amely közvetlenül támogatja a tiszta funkcionális átalakítást.

Az olyan általános célú funkcionális programozási nyelvek, mint az ML, a Scheme, a Haskell és az F#, korábban elsősorban az egyetemi közösség számára voltak érdekesek. Bár mindig is lehetett tiszta funkcionális átalakításokat írni a C# és a Visual Basic nyelven, a nehézség nem tette vonzóvá a legtöbb programozó számára. A nyelvek legújabb verzióiban azonban az olyan új nyelvi szerkezetek, mint a lambda kifejezések és a típuskövetkeztetés, sokkal egyszerűbbé és hatékonyabbá teszik a funkcionális programozást.

A funkcionális programozással kapcsolatos további információkért lásd : Funkcionális programozás és imperatív programozás.

Tartományspecifikus funkcionális programozási nyelvek

Bár az általános funkcionális programozási nyelveket még nem fogadták el széles körben, egyes tartományspecifikus funkcionális programozási nyelvek sikeresebbek voltak. A kaszkádolt stíluslapok (CSS) például számos weblap megjelenésének és megjelenésének meghatározására szolgálnak, az XSLT-stíluslapok pedig széles körben használhatók az XML-adatmanipulációban. További információ az XSLT-ről: XSLT-átalakítások.

Terminológia

Az alábbi lista a funkcionális átalakításokhoz kapcsolódó kifejezéseket határozza meg.

magasabb rendű (első osztályú) függvény
Programozott objektumként kezelhető függvény. Egy magasabb rendű függvény például átadható vagy visszaadható más függvényekből. A C#-ban és a Visual Basicben a delegáltak és a lambda kifejezések olyan nyelvi funkciók, amelyek támogatják a magasabb szintű függvényeket. Magasabbrendű függvény írásához deklarálhat egy vagy több argumentumot a meghatalmazottak beírásához, és gyakran használ lambda kifejezéseket a meghíváskor. A szabványos lekérdezési operátorok közül sok magasabb rendű függvény.

További információ: Standard lekérdezési operátorok áttekintése (C#) és Standard lekérdezési operátorok áttekintése (Visual Basic).

lambda kifejezés
Lényegében egy beágyazott névtelen függvény, amely bárhol használható, ahol egy delegált típus várható. Ez a lambda kifejezések egyszerűsített definíciója, de az oktatóanyag céljaira megfelelő.

További információ: Lambda-kifejezések (C# programozási útmutató) és Lambda-kifejezések (Visual Basic)).

Gyűjtemény
Strukturált adathalmaz, amely általában egységes típusú. Ahhoz, hogy kompatibilis legyen a LINQ-val, a gyűjteménynek implementálnia kell az IEnumerable interfészt vagy a IQueryable felületet (vagy az egyik általános megfelelőjét IEnumerator<T> vagy IQueryable<T>).

tuple (névtelen típusok)
A matematikai fogalom, a tuple egy véges sorozata objektumok, mindegyik egy adott típusú. A rekordokat rendezett listának is nevezik. A névtelen típusok ennek a fogalomnak a nyelvi implementációi, amelyek lehetővé teszik egy névtelen osztálytípus deklarálását, valamint egy ilyen típusú objektum egyidejű példányosítását.

További információt a Névtelen típusok (C# programozási útmutató) és a Névtelen típusok (Visual Basic) című témakörben talál.

type inference (implicit gépelés)
A fordító képessége a változó típusának meghatározására explicit típusdeklaráció hiányában.

További információ: Implicit módon beírt helyi változók (C# programozási útmutató) és helyi típusú következtetés (Visual Basic)

halasztott végrehajtás és lusta kiértékelés
A kifejezés kiértékelésének késleltetése, amíg a feloldott értékre ténylegesen szükség nem lesz. A halasztott végrehajtás támogatott a gyűjteményekben.

További C#-információkért lásd : Bevezetés a LINQ-lekérdezések (C#) és a késleltetett végrehajtás és lusta kiértékelés a LINQ-ból XML-be (C#) című témakörbe.

További Visual Basic-információkért lásd : Egyszerű lekérdezési műveletek (Visual Basic) és késleltetett végrehajtás és lusta kiértékelés LINQ-ból XML-be (Visual Basic).

Ezeket a nyelvi funkciókat ebben a szakaszban kódmintákban fogjuk használni.

Lásd még