Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 28269|Válasz: 1

[Forrás] A tuple-ok használata Jáván

[Linket másol]
Közzétéve 2021. 08. 31. 11:22:41 | | | |
A tuple-oknak különleges jelentése van a számítógépek területén, ez a név kissé ismeretlennek tűnhet, és gyakorlatilag nincsenek alkalmazási forgatókönyvek a kódírásban, azonban meglepő módon a tuple-ok szorosan kapcsolódnak a programozáshoz, egyes diákok nem tudják, hogy a relációs adatbázisokban a "rekordok" másik akadémiai neve a "tuple", a rekord egy tuple, a tábla egy kapcsolat, a rekordok táblázatokból állnak, a tuple-ok kapcsolatokat generálnak, ez a relációs adatbázisok alapvető fogalma.

A tuple-ok elválaszthatatlan részei a relációs adatbázisnak, de nem annyira nélkülözhetetlenek a programozásban. Néhány programozási nyelvnek van saját tuple szintaxisa, mint például a python, F#, haskell, scala stb., míg mások népszerűbbek, de nincs tuple szintaxis, mint például a Java, JavaScript, C++, C# stb.

A tuplák nem nélkülözhetetlen programozási elemek, mint a tömbök és objektumok, de használatuk nagyon kényelmes lehet a kódíráshoz, különösen, ha egy függvénynek több értéket kell visszaadnia. Ebben az esetben a gyakori gyakorlat az, hogy definiálunk egy objektumot, beállítjuk a függvénynek vissza kell adott értéket az objektum attribútumának, majd a függvény visszatérési értéktípusát az objektum típusára állítjuk. Vagy ez a függvény visszaadhat egy térképes adatszerkezetet, amelyben az adott adat létezik. Azonban mindkét megközelítésnek vannak hibái, az első módszer megbízható, de a kód szokatlanul túlsúlyos. Maguk a követelmények nagyon egyszerűek, amennyiben a függvény több értéket ad vissza, de ez a módszer előre megköveteli a típus meghatározását, aztán annak megalkotását, a instance tulajdonságok beállítását, majd végül a visszatérést, ami túl hatástalan. Bár a második módszer gyors, de nem elég biztonságos, a függvény belül tudhatja, milyen érték van tárolva a térképen, de a függvényen kívül csak azt tudja, hogy ennek a függvénynek a visszaadó értéke egy leképezés, például hogy milyen értékek vannak tárolva a térképen, és milyen típus nem ismert, többszemélyes fejlesztési projektekben. Ez a hátrány különösen nyilvánvaló, sajnos ez a gyakorlat a preferált megoldás néhány dinamikusan típusozott nyelvben, ami az egyik alapvető oka annak, hogy a dinamikusan típusított nyelveket gyenge biztonság és olvashatóság miatt panaszkodnak. Ezért a legjobb megoldás erre a problémára a tuples használata.

Azokban a nyelvekben, ahol maga a szintaxis támogatja a tuple-okat, a tuple-okat zárójelben ábrázolják, például (int, bool, string) hármas típus, és értéke lehet (1, true, "abc"). Fontos megjegyezni, hogy minden tuple típus egyedi, (int, bool), (bool, int), (string, dupla) mind binárisok, de különböző tuplek, ha egy bizonyos tuple-t veszünk a függvény visszatérő értékének, bár nem olyan jó, mint az első megoldás, amelyet korábban említettek egyedi típusokkal, olvashatóság és biztonság szempontjából, de sokkal jobb, mint a második, a map-et használva, legalább a tuples segítségével tudni lehet, hány értéket ad vissza a függvény, Milyen értékek ezek az értékek, és az az előnye, hogy egyszerű és gyors egy második séma kódolása map segítségével.

Szerencsére ezek a programozási nyelvek ma már támogatják a generikákat, és a nem beépített tuple-ok megvalósítása rendkívül egyszerűvé vált, de végül is ez egy nem nyelvi beépített szintaxiselem, és biztosan nem olyan kényelmes használni, mint a natív tuplek.

Az alábbiakban bemutat egy harmadik féltől származó Java tuples könyvtárat, a Javatuples-t, saját hivatalos weboldallal és több száz github csillaggal, amely szinte monopóliumként játszik a Java tuples területén.

A Javatuples egy tuple maximális hossza 10 hosszúságú definiál, de szerintem egy 10 tuple elemeinek száma már így is túl sok, és gyakorlatilag nincs olvashatóság. A Tuple osztályok a következőképpen definiálódnak:

Egység<A> (1 elem)

Pár<A,B> (2 elem)

Hármas<A,B,C> (3 elem)

Négyes<A,B,C,D> (4 elem)

Kvintet<A,B,C,D,E> (5 elem)

Szextet<A,B,C,D,E,F> (6 elem)

Septet<A,B,C,D,E,F,G> (7 elem)

Oktet<A,B,C,D,E,F,G,H> (8 elem)

Ennead<A,B,C,D,E,F,G,H,I> (9 elem)

Decade<A,B,C,D,E,F,G,H,I,J> (10 elem)

Ezek az archetípusos osztályok általános osztályok, így a szögletes zárójelben lévő betűket tetszőleges típusokra lehet cserélni. Az alábbiakban egy bináris kód példája látható





Következtetések levonásával a többi tuple típust ugyanúgy használják.

Mivel a Java tuple-jai maga a nyelv nem támogatja, a kód jávai és kevésbé elegánsnak tűnik. Azonban a kódírás mellett a szerkesztés kényelme növelheti a hatékonyságot, fontosabb inkább a kód által kifejezett jelentésre is nagyobb odafigyelni, vagyis a tuple jelentését (funkcióját) használja a kód kibővítésére, és az írás módja valójában csak másodlagos.

Végül meg kell jegyezni, hogy az általános szögzárójelben szereplő típus nem lehet a Java alap típusa, ha az alap típust akarjuk használni, akkor annak az alap típusnak is kell lennie, amelyet már bezártak, például az int típust át kell alakítani egész számra, és a bool típus megfelel a Boolean típusnak.




Előző:A POI CellStyle beállítja a cella háttérszínét
Következő:.NET/C# MailKit oktató levelküldéshez [forráskóddal]
 Háziúr| Közzétéve 2021. 09. 15. 10:55:08 |
Maven-t kell használni az ilyen függőségek bevezetéséhez:


Javatuple lehetővé teszi, hogy akár tíz visszaküldési értéket is létrehozzunk


Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com