Thread overview
Terim karışıklığı: mixin
May 31, 2012
Salih Dinçer
May 31, 2012
Salih Dinçer
May 31, 2012
zafer
Jun 01, 2012
zafer
Jun 01, 2012
Salih Dinçer
July 11, 2009

(Not soruyu yazarken durumun o kadar da kötü olmadığını farkettim, çünkü bunların hepsi de bir tür "kod katma"yla ilgili.)


Ben mixin için bugüne kadar tek anlam bilirdim:

  1. Bir sınıf, küçük özellikler kazandıran başka sınıflardan türetilir ve böylece kod tekrarının önüne geçilmiş olur.

D'de iki tane daha mixin var! :)

  1. Adı yalnızca "mixin" olarak geçen ve dizgi içinde D kodları kullandıran olanak. Şu sayfada gösteriliyor:

http://www.digitalmars.com/d/2.0/mixin.html

Onunla dizgi içinde oluşturulan D kodları derlenebiliyor ve normal kod gibi çalıştırılabiliyor.

  1. Yukarıdaki sayfanın başında bağlantısı verilen "template mixins":

http://www.digitalmars.com/d/2.0/template-mixin.html

Bu da sınıftan türetmeye benziyor ama çok daha esnek çünkü bütün sınıftan türetmek yerine, bir şablonun istenen bölümlerini "katma"ya yarıyor.

Aslında size bunlar için Türkçe olarak ne kullanalım diye soracaktım. Bunlar için şu karşılıklar nasıl?

  1. D'de kullanılmıyor aslında...
  • katma sınıf *
  • katma dizgi
  • dizgi katması *
  • katma şablon
  • şablon katması *

Ben * koyduklarımı beğeniyorum galiba. Başka önerisi olan var mı?

Ali

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

May 31, 2012

Sanırım mixin anlam olarak çok geniş bir olanak. Öyle ki şu aşağıdaki şablon kullanımına bakarak, kendi kapsamı olduğunu görüyoruz. Gerçekten ilginç ve basit bir makro sisteminden üstün.

import std.stdio: writefln;

int x = 4;

mixin template Foo() {
   int x = 5;
   int bar()
   {
       return x;
   }
} mixin Foo;

void main() {
   writefln("x = %d", x); // prints 4
   writefln("bar() = %d", bar()); // prints 5
}

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

May 31, 2012

Bir de Ali hocanın yazdığı şu örnek de çok güzel:

import std.stdio;
import std.bitmanip;

struct Yazmaç
{
   union
   {
       uint değeri;

       mixin(bitfields!(ubyte,  "birinci", 8,
                        ubyte,  "ikinci",  8,
                        ushort, "üçüncü", 16));
   }
}

void göster(uint sayı)
{
   writefln("%032b %08x %10s", sayı, sayı, sayı);
}

void main()
{
   Yazmaç yazmaç;

   yazmaç.birinci = 10;
   yazmaç.ikinci = 20;
   yazmaç.üçüncü = 30;

   göster(yazmaç.değeri);
}

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

May 31, 2012

Alıntı (acehreli:1247357242):

>

Ben * koyduklarımı beğeniyorum galiba. Başka önerisi olan var mı?

Konu hakkında çok bilgim olmadığı için yorum yapmak zor. Yardımcı olacaksa bende seninle aynı fikirdeyim Ali yıldızlılar çok daha güzel görünüyor ;-)

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

June 01, 2012

Evet, haklısın tarihe hiç dikkat etmemiştim :-D Ömürsün sen Salih ;-)

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

June 01, 2012

Bu başlığı bilinçli hortlattım. Dikkat ederseniz ilk verdiğim örnek şu sayfanın sonunda yer alıyor: http://www.digitalmars.com/d/2.0/template-mixin.html

Amacım böyle bir olanağa isim vermenin güçlüğünü ifade etmekti. Çünkü gerçekten kendisi eli bol zengin bir arkadaş...:)

Alıntı (Salih Dinçer):

>

Sanırım mixin anlam olarak çok geniş bir olanak. Öyle ki şu aşağıdaki şablon kullanımına bakarak, kendi kapsamı olduğunu görüyoruz. Gerçekten ilginç ve basit bir makro sisteminden üstün.

İşte, başlangıçta bu arkadaşı derleme anında belirlediğimiz kurallar çerçevesinde kodları dizen akıllı bir makro zannetmiştim. Oysa belirtmeye çalıştığım gibi tek kelimeyle bunun terim karşılığını bulmak zor görünüyor.

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

June 01, 2012

Salih herhalde yanlışlıkla olsa gerek, 3 yıl önceki terim konusunu hortlatmış. Bu saatten sonra yapacak bir şey yok.

Ali

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