alias this
Başka bağlamlarda başka anlamlara gelen alias
ve this
anahtar sözcükleri bir arada kullanıldıklarında farklı bir anlam kazanırlar. Bu yüzden, ikisi bir arada kullanıldığında tek bir anahtar sözcük olarak kabul edilmelidirler.
alias this
, bir yapının veya sınıfın otomatik tür dönüşümü yoluyla başka türler yerine geçmesini sağlar. Tür dönüşümü için başka bir seçenek İşleç Yükleme bölümünde gördüğümüz opCast
işlecidir. Farkları, opCast
'in açıkça yapılan tür dönüşümleri için, alias this
'in ise otomatik tür dönüşümleri için kullanılmasıdır.
Bu iki sözcük birbirlerinden ayrı olarak yazılırlar; aralarına yapının veya sınıfın bir üyesi gelir:
alias üye_değişken_veya_işlev this;
alias this
yapının veya sınıfın türünü gerektiğinde belirtilen üyenin türüne otomatik olarak dönüştürmeyi sağlar. Dönüşüm sonucunda üretilen değer o üyenin değeridir.
Aşağıdaki Kesir
örneği alias this
'i bir üye işlev ile kullanıyor. Daha aşağıdaki AraştırmaGörevlisi
örneğinde ise alias this
'in üye değişkenlerle kullanımlarını göreceğiz.
değeri
işlevinin dönüş değeri double
olduğundan, aşağıdaki alias this
bildirimi Kesir
nesnelerinin double
değerler yerine kullanılabilmelerini sağlar:
import std.stdio; struct Kesir { long pay; long payda; double değeri() const { return double(pay) / payda; } alias değeri this; // ... } double hesap(double soldaki, double sağdaki) { return 2 * soldaki + sağdaki; } void main() { auto kesir = Kesir(1, 4); // 1/4 anlamında writeln(hesap(kesir, 0.75)); }
Yukarıdaki yapının nesneleri double
türünde değer beklenen ifadelerde geçtiklerinde değeri
işlevi çağrılır ve o işlevin döndürdüğü değer kullanılır. Yukarıdaki kodda aslında double
bekleyen hesap
işlevine bir Kesir
nesnesi gönderilebilmiş ve o hesapta değeri
işlevinin döndürdüğü 0.25 kullanılmıştır. Program, 2 * 0.25 + 0.75 hesabının sonucunu yazdırır:
1.25