Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 28269|Odpoveď: 1

[Zdroj] Použitie n-tic v Jave

[Kopírovať odkaz]
Zverejnené 31. 8. 2021 11:22:41 | | | |
N-tice majú v oblasti počítačov špeciálny význam, tento názov môže znieť trochu neznáme a v písaní kódu v podstate neexistujú aplikačné scenáre, avšak prekvapivo sú n-tice úzko späté s programovaním, niektorí študenti nemusia vedieť, že ďalším akademickým názvom pre "záznamy" v relačných databázach je "n-tica", záznam je n-tica, tabuľka je vzťah, záznamy sú zložené z tabuliek, n-tice generujú vzťahy, toto je základný koncept relačných databáz.

N-tice sú neoddeliteľnou súčasťou relačnej databázy, no v programovaní nie sú také nevyhnutné. Niektoré programovacie jazyky majú vlastnú syntax n-tic, ako python, F#, haskell, scala a pod., zatiaľ čo iné sú populárnejšie, ale nemajú syntax n-tic, napríklad Java, JavaScript, C++, C# a podobne.

N-tice nie sú nevyhnutné programovacie prvky ako polia a objekty, ale ich použitie môže byť veľmi pohodlné pri písaní kódu, najmä keď funkcia potrebuje vracať viacero hodnôt. V tomto prípade je bežnou praxou definovať objekt, nastaviť hodnotu, ktorú má funkcia vrátiť ako atribút objektu, a potom nastaviť typ vrátenej hodnoty funkcie na typ objektu. Alebo môže táto funkcia vrátiť mapovú dátovú štruktúru, v ktorej sa konkrétne dáta vyskytujú. Oba prístupy však majú svoje chyby a prvá metóda je spoľahlivá, no kód je nezvyčajne nafúknutý. Požiadavky sú veľmi jednoduché, pokiaľ funkcia vráti viacero hodnôt, ale táto metóda vyžaduje vopred definovať typ, potom ho inštancionovať, nastaviť vlastnosti inštancie a nakoniec vrátiť, čo je príliš neefektívne. Hoci druhá metóda je rýchla, ale nie dostatočne bezpečná, vo vnútri funkcie môže vedieť, aká hodnota je uložená v mape, ale mimo funkcie môže vedieť len, že návratová hodnota tejto funkcie je mapa, čo sa týka toho, aké hodnoty sú uložené v mape a aký typ nie je známe, v projektoch s viacerými hráčmi je táto nevýhoda obzvlášť zrejmá, žiaľ, táto prax je preferovaným riešením v niektorých dynamicky typovaných jazykoch, čo je tiež jeden zo základných dôvodov, prečo sa dynamicky typované jazyky sťažujú na zlú bezpečnosť a čitateľnosť. Preto je najlepším riešením tohto typu problému použiť n-tice.

V jazykoch, kde syntax sama podporuje n-tice, sú n-tice reprezentované zátvorkami, ako napríklad (int, bool, string) je trojitý typ a jeho hodnota môže byť (1, true, "abc"). Treba poznamenať, že každý typ n-tice je jedinečný, (int, bool), (bool, int), (string, double) sú všetky binárne funkcie, ale sú to rôzne n-tice, ak vezmete určitú n-ticu ako návratovú hodnotu funkcie, hoci nie je také dobré ako prvé riešenie využívajúce vlastné typy spomenuté vyššie z hľadiska čitateľnosti a bezpečnosti, ale je oveľa lepšie ako druhé riešenie využívajúce mapovanie, aspoň pomocou n-tic môžete vedieť, koľko hodnôt funkcia vráti, Aký typ hodnoty sú tieto hodnoty, a výhodou je, že je jednoduché a rýchle naprogramovať druhý systém pomocou mapy.

Našťastie tieto programovacie jazyky teraz podporujú generické jazyky a implementácia ne-vstavaných n-tic sa stala mimoriadne jednoduchou, ale napokon ide o zabudovaný syntaktický prvok mimo jazyka a určite nie je taký pohodlný na použitie ako natívne n-tice.

Nasleduje knižnica tretej strany Java n-tic, nazvaná Javatuples, s vlastnou oficiálnou domovskou stránkou a stovkami github hviezd, ktorá takmer zohráva monopolnú pozíciu v oblasti Java n-tic.

Javatuple definujú ticu s maximálnou dĺžkou 10, ale myslím si, že počet prvkov v 10-tici je už príliš veľký a v podstate nie je čitateľná. Triedy n-tic sú definované nasledovne:

Jednotka<A> (1 element)

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

Triplet<A,B,C> (3 prvky)

Kvarteto<A,B,C,D> (4 prvky)

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

Sextet<A,B,C,D,E,F> (6 prvkov)

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

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

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

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

Tieto archetypálne triedy sú generické triedy, takže písmená v zátvorkách je možné nahradiť ľubovoľnými typmi. Nižšie je príklad binárneho kódu





Vyvodzovaním záverov sa ostatné typy n-tic používajú rovnakým spôsobom.

Keďže n-ticy v Jave nie sú podporované samotným jazykom, kód vyzerá javánsky a menej elegantne. Avšak pri písaní kódu, okrem pohodlia písania, môže zvýšiť efektivitu, je dôležitejšie venovať väčšiu pozornosť významu vyjadrenému samotným kódom, teda použiť význam (funkciu) samotnej n-tice na vylepšenie kódu, a spôsob, akým ho napísať, je v skutočnosti až druhoradý.

Nakoniec treba poznamenať, že typ v generických hranatých zátvorkách nemôže byť základným typom Javy, ak chcete použiť základný typ, musí to byť aj základný typ, ktorý bol zablokovaný, napríklad int typ musí byť prevedený na celé číslo a bool typ zodpovedá Booleovskému typu.




Predchádzajúci:POI CellStyle nastavuje farbu pozadia bunky
Budúci:.NET/C# MailKit tutoriál na odosielanie e-mailov [so zdrojovým kódom]
 Prenajímateľ| Zverejnené 15. 9. 2021 10:55:08 |
Musíš použiť maven na zavedenie závislostí ako toto:


javatuply nám umožňujú vytvoriť až desať návratových hodnôt


Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com