Thread overview
Fonksiyondan şablon tipi dönmek
Jul 08, 2015
zafer
Jul 13, 2015
zafer
July 08, 2015

Merhaba,

MongoCursor!(T,R,U) find(R, T, U)(...);

Yukarıdaki kodda find metodunun dönüş tipi bir şablon tipi, bu metodu çağırdığım yerde bu şablon tipinde bir değişkeni nasıl tanımlaya bilirim?

Ayrıca "auto" kullanabilirim biliyorum ama dile yeni başlayan ve dili tanıma aşamasında olan kişiler için "auto" olanağının kullanılmaması gerektiğini düşünüyorum. Tabi ki buradaki amacım şablon tiplerinden degişken tanımlamayı öğrenmek.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2015

Haklısın ama ne yazık ki en kolayı auto, const, vs. kullanmak çünkü çoğu durumda türü bilmek zorunda bile kalmıyoruz. Önemli olan, nasıl kullanıldığı. Mutlaka yazmak zorunda kalırsak, aşağıdaki 'a' değişkeni veya 'b' değişkeni tanımı gibi yapabiliriz. Ama görüldüğü gibi, hiç hoş değil:

struct MongoCursor(T, R, U)
{}

MongoCursor!(T,R,U) find(R, T, U)(R[], T[], U)
{
   return MongoCursor!(T,R,U)();
}

void main()
{
   MongoCursor!(double, int, char) a = find([ 42 ], [ 1.5 ], 'a');

   alias X = typeof(find([ 42 ], [ 1.5 ], 'a'));
   X b = find([ 42 ], [ 1.5 ], 'a');
}

Hatta, bazı durumlarda işlevler Voldemort denen adı anılamaz türler döndürdüklerinde hiçbir şansımız yok:

auto find(R, T, U)(R[], T[], U)
{
   /* Bu tür dışarıdan anılamaz. */
   static struct MongoCursor(T, R, U)
   {}

   return MongoCursor!(T,R,U)();
}

void main()
{
   /* a'nın türü söylenemez ama kullanılabilir. */
   auto a = find([ 42 ], [ 1.5 ], 'a');
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2015

"auto" olanagına karşı değilim ancak bilinçli kullanmaktan yanayım, bence herhangi bir meslek sahibi öncelikle işinin nasıl yapıldığını bilmeli, bundan sonra elbette daha pratik yöntemler kullanarak bu süreci iyileştirbilir. Açıklama için teşekkürler.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]