N-tice mají v oblasti počítačů zvláštní význam, tento název může znít trochu neznámě a v psaní kódu prakticky neexistují žádné aplikační scénáře, avšak překvapivě jsou n-tice úzce spjaty s programováním, někteří studenti nemusí vědět, že dalším akademickým názvem pro "záznamy" v relačních databázích je "n-tice", záznam je n-tica, tabulka je vztah, záznamy se skládají z tabulek, n-tice generují vztahy, což je základní koncept relačních databází.
N-tice jsou neoddělitelnou součástí relační databáze, ale v programování nejsou tak nepostradatelné. Některé programovací jazyky mají vlastní syntaxi n-tic, například python, F#, haskell, scala atd., zatímco jiné jsou populárnější, ale nemají syntaxi n-tic, například Java, JavaScript, C++, C# atd.
N-tice nejsou nepostradatelné programovací prvky jako pole a objekty, ale jejich použití může být velmi pohodlné pro psaní kódu, zejména když funkce potřebuje vracet více hodnot. V tomto případě je běžnou praxí definovat objekt, nastavit hodnotu, kterou funkce musí vrátit, jako atribut objektu, a poté nastavit typ vrácené hodnoty funkce na typ objektu. Nebo můžete nechat tuto funkci vrátit mapovou datovou strukturu, ve které konkrétní data existují. Oba přístupy však mají své nedostatky a první metoda je spolehlivá, ale kód je neobvykle přeplněný. Požadavky jsou velmi jednoduché, pokud funkce vrací více hodnot, ale tato metoda vyžaduje předem definovat typ, poté jej instancovat, nastavit vlastnosti instance a nakonec vrátit, což je příliš neefektivní. Ačkoliv je druhá metoda rychlá, ale ne dostatečně bezpečná, uvnitř funkce může vědět, jaký druh hodnoty je uložen v mapě, ale mimo funkci může vědět pouze, že návratová hodnota této funkce je mapa, což se týče toho, jaké hodnoty jsou uloženy v mapě a jaký typ není známo, u projektů s více hráči není známo. Tato nevýhoda je obzvlášť zřejmá, bohužel je tato praxe preferovaným řešením v některých dynamicky typovaných jazycích, což je také jeden ze základních důvodů, proč jsou dynamicky typované jazyky kritizovány kvůli špatné bezpečnosti a čitelnosti. Proto je nejlepším řešením tohoto typu problému použití ntic.
V jazycích, kde syntaxe sama podporuje n-tice, jsou n-tice reprezentovány závorkami, například (int, bool, string) je trojitý typ a jeho hodnota může být (1, true, "abc"). Je třeba poznamenat, že každý typ n-tice je jedinečný, (int, bool), (bool, int), (string, double) jsou všechny binárky, ale jsou to různé n-tice, pokud vezmete určitou n-tici zde jako návratovou hodnotu funkce, i když není tak dobré jako první řešení využívající výše zmíněné vlastní typy z hlediska čitelnosti a bezpečnosti, ale je to mnohem lepší než druhé řešení využívající mapu, alespoň pomocí n-tic lze vědět, kolik hodnot funkce vrátí, Jaký typ hodnoty tyto hodnoty jsou, a výhodou je, že je jednoduché a rychlé naprogramovat druhé schéma pomocí mapy.
Naštěstí tyto programovací jazyky nyní podporují generické prvky a implementace nevestavěných n-tic se stala extrémně jednoduchou, ale koneckonců jde o ne-jazykový vestavěný syntaktický prvek a rozhodně není tak pohodlný na použití jako nativní n-tice.
Následující představuje knihovnu javových n-tic třetí strany, nazvanou Javatuples, s vlastní oficiální domovskou stránkou a stovkami github hvězd, která téměř hraje monopolní pozici v oblasti n-tic Java.
Javatuple definují tici s maximální délkou 10, ale myslím, že počet prvků v 10-tici je už příliš velký a v podstatě není čitelná. Třídy n-tic jsou definovány následovně:
Jednotka<A> (1 element)
Pár<A,B> (2 prvky)
Trioly<A,B,C> (3 prvky)
Kvartet<A,B,C,D> (4 prvky)
Kvintet<A,B,C,D,E> (5 prvků)
Sextet<A,B,C,D,E,F> (6 prvků)
Septet<A,B,C,D,E,F,G> (7 prvků)
Oktet<A,B,C,D,E,F,G,H> (8 prvků)
Ennead<A,B,C,D,E,F,G,H,I> (9 prvků)
Desetiletí<A,B,C,D,E,F,G,H,I,J> (10 prvků) Tyto archetypální třídy jsou generické třídy, takže písmena v úhlových závorkách lze nahradit libovolnými typy. Níže je příklad binárního kódu
Při vyvozování závěrů se ostatní typy n-tic používají stejným způsobem.
Protože n-tice v Javě nejsou podporovány samotným jazykem, kód vypadá javánsky a méně elegantně. Nicméně při psaní kódu, kromě pohodlí psaní, může zvýšit efektivitu, je důležitější věnovat větší pozornost významu vyjádřenému samotným kódem, tedy využití významu (funkce) n-tice k vylepšení kódu, a způsob, jakým ho napsat, je ve skutečnosti až druhotný.
Nakonec je třeba poznamenat, že typ v obecných úhlových závorkách nemůže být základním typem Javy, pokud chcete použít základní typ, musí být také základním typem, který byl zarámován, například int typ musí být převeden na celé číslo a bool typ odpovídá Booleovskému typu. |