2014-04-29 14 views
6

All'interno del modulo std.traits, posso trovare una linea simile a:Cosa sono le istruzioni "è" in D?

assert(is(Unqual!(int) == int)); 

So che Unqual rimuove qualsiasi modificatore tipo come immutabile, ma che cosa fa il 'è' fare? In che modo è diverso da una dichiarazione if e quando dovrebbe essere utilizzata?

+1

Non so perché i downvotes. Sembra una domanda legittima. Se hai downvoted, per favore spiega perché. – deadalnix

+0

@deadalnix Suppongo che sia stato downvoted perché era disponibile nella documentazione. Ognuno deve ammettere però, che Googling è insieme alla lettera D non è la cosa più facile per ottenere risultati significativi per. –

+2

Usa "dlang", "D programming" o "site: dlang.org" per risultati migliori. –

risposta

8

is(Unqual!(int) == int) è un'espressione, non un'affermazione. La riga che hai pubblicato non esiste in std.traits.

Suppongo si intende la seguente riga:

static assert(is(Unqual!int == int)); 

vedere la documentazione per IsExpression.

+0

Ah, non mi meraviglia che non sia riuscito a trovarlo all'interno delle documentazioni. :S –

5

is è un'espressione che permette ad esempio di controllare se i tipi sono uguali, se 1 tipo è sottotipo di un altro o se T una classe/enum/struct ecc

Il codice che hai postato controlla se tipo specificato fa non ha alcun modificatore.

Per ulteriori informazioni, vedere D Language Documentation about IsExpression.

Problemi correlati