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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: