2014-04-29 15 views
6

Im Inneren des std.traits Modul, kann ich eine Zeile wie finden:Was sind 'ist' Aussagen in D?

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

Ich weiß, dass Unqual jegliche Art Modifikatoren wie unveränderlich entfernt, aber was bedeutet das ‚ist‘ zu tun? Wie unterscheidet es sich von einer if-Anweisung und wann sollte es verwendet werden?

+1

Ich bin mir nicht sicher, warum die Downvotes. Das klingt nach einer legitimen Frage. Wenn Sie abgelehnt haben, erläutern Sie bitte warum. – deadalnix

+0

@deadalnix Ich gehe davon aus, dass es downvoted wurde, weil es in der Dokumentation verfügbar war. Jeder muss jedoch zugeben, dass Googeln zusammen mit dem Buchstaben D nicht die einfachste Sache ist, um aussagekräftige Ergebnisse zu erhalten. –

+2

Verwenden Sie "dlang", "D-Programmierung" oder "site: dlang.org" für bessere Ergebnisse. –

Antwort

8

is(Unqual!(int) == int) ist ein Ausdruck, keine Aussage. Die von Ihnen gepostete Zeile existiert nicht in std.traits.

Ich nehme an, Sie die folgende Zeile bedeuten:

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

finden Sie in der Dokumentation für IsExpression.

+0

Ah kein Wunder, ich konnte es nicht in den Statement-Dokumentationen finden. : S –

5

is ist ein Ausdruck, zum Beispiel ermöglicht, wenn Typen gleich sind zu prüfen, wenn ein Typ Subtyp eines anderen ist, oder wenn T eine Klasse/enum/Struktur usw.

Der Code, den Sie überprüft gebucht, wenn angegebenen Typ tut habe keine Modifikatoren.

Für weitere Informationen siehe D Language Documentation about IsExpression.