Merhaba,
TypeInfo yapısını ve is işleçini kullanarak türleri algılamak veya sorgulamak istiyorum. Bu işleçe maalesef yabancıyım ama araştırdığım kadarıyla bir kaç şekilde kullanmak mümkün görünüyor. Acaba aşağıdaki örnekte typeid() kullanmadan, tekrar bir TypeInfo verisi oluşturmadan bunu kullanabilmenin bir yöntemi var mı?
import std.stdio;
import std.typetuple;
void main()
{
enum index = 1;
alias TypeTuple!(bool, byte, short) türler;
TypeInfo tür = typeid(türler[index]);
tür.writeln;
if(tür.tsize() > 1)
{
writeln("bool olamaz ama\n"
"uint veya short\n"
"olabilir...");
} else writeln("bool mu acaba, belki de byte'dır!");
if(tür is typeid(bool)) "(1) bu bir bool".writeln;
if(is(tür == bool)) "(2) bu bir bool".writeln; // çalışmıyor!
if(is(tür: bool)) "(3) bu bir bool".writeln; // çalışmıyor!
}
Burada maksat bool türlerini birbirleriyle karışabilecek ve aynı uzunlukta olan diğer türlerden ayırt etmek. Toplam 3 ifade denedim ama sadece 1.'si çalışıyor!
Teşekkürler...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]