2014-04-29 15 views
6

Wewnątrz modułu std.traits mogę znaleźć linię podobną do:Co to są instrukcje "jest" w D?

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

wiem, że Unqual usuwa wszelkie modyfikatory typu jak niezmienne, ale co robi „to” zrobić? Czym różni się od instrukcji if i kiedy powinno się jej używać?

+1

Nie jestem pewien, dlaczego spadły. To brzmi jak uzasadnione pytanie. Jeśli przegłosujesz, wyjaśnij dlaczego. – deadalnix

+0

@deadalnix Zakładam, że został wycofany, ponieważ był dostępny w dokumentacji. Każdy musi jednak przyznać, że Googling jest wraz z literą D nie jest najłatwiejszą rzeczą, aby uzyskać sensowne wyniki. –

+2

Aby uzyskać lepsze wyniki, użyj "dlang", "D programming" lub "site: dlang.org". –

Odpowiedz

8

is(Unqual!(int) == int) jest wyrażeniem, a nie stwierdzeniem. Opublikowana przez Ciebie linia nie istnieje w std.traits.

Zakładam, że oznaczać następujący wiersz:

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

zapoznać się z dokumentacją IsExpression.

+0

Ach nic dziwnego, że nie mogłem go znaleźć w dokumentacji oświadczeń. : S –

5

is jest wyrażeniem, które pozwala na przykład sprawdzić, czy typy są równe, jeśli typ jest podtypem 1 z drugiego lub jeśli T klasą/enum/struct itp

Kod pan pisał sprawdza, czy określony typ robi nie ma żadnych modyfikatorów.

Więcej informacji se D Language Documentation about IsExpression.