nome / i conceto / i: contenitore di tipi diversi che possono essere usati come un tipo

-1

Sto cercando il nome (i) di un concetto che ho sentito. So che non esiste in molti linguaggi di programmazione, ma penso che esista almeno in C ++.

Fammi provare a spiegare il concetto.

Supponiamo di voler definire una collezione generica in qualche linguaggio di programmazione, e voglio che questa collezione contenga elementi di tipo A e tipo B . Nei linguaggi orientati agli oggetti come C # o Java posso farlo in almeno due modi diversi:

  1. Definisci la raccolta per contenere elementi di tipo object .
  2. Crea un tipo (o interfaccia) C e modifica il codice in modo che A e B ereditino entrambi (o implementino) C . Quindi definisci la raccolta per contenere gli elementi di tipo C .

Entrambi i modi hanno i loro problemi:

  1. mi consente di inserire tutto nella raccolta anziché solo A e B , che potrebbe non essere quello che voglio.
  2. funziona solo se posso modificare il codice di A e B.

E il concetto che sto cercando consente un terzo approccio:

  1. definisce un "contenitore di tipi" T che contiene sia A che B e può essere usato come un tipo regolare, in modo da poter creare una raccolta di T .

In questo caso, sarei in grado di inserire A e B nella raccolta, ma non mi sarebbe richiesto di modificare il codice di A e B .

Lo stesso concetto consente di definire metodi che richiedono un A o B come input e li elaborano allo stesso modo. Per esempio. potremmo voler definire un metodo Square che prende un int o un float x e restituisce x*x . Con questo concetto, non avremmo bisogno di definire due metodi (uno per int , uno per float ).

    
posta Kjara 01.09.2017 - 16:50
fonte

1 risposta

2

Il nome del concetto che stai cercando è un Tipo di unione .

Contrasta con un tipo di intersezione, che è dove tutti gli elementi della tua collezione dovrebbero ereditare sia da A che da B.

    
risposta data 01.09.2017 - 17:04
fonte

Leggi altre domande sui tag