D Programlama - Takma Adlar
Takma ad, adından da anlaşılacağı üzere, mevcut adlar için alternatif bir ad sağlar. Diğer ad için sözdizimi aşağıda gösterilmiştir.
alias new_name = existing_name;
Aşağıda, bazı eski biçim örneklerine başvurmanız durumunda eski sözdizimi verilmiştir. Bunun kullanılması kesinlikle tavsiye edilmez.
alias existing_name new_name;
İfade ile kullanılan başka bir sözdizimi daha vardır ve aşağıda ifade yerine doğrudan takma adı kullanabileceğimiz bir sözdizimi verilmiştir.
alias expression alias_name ;
Bildiğiniz gibi, typedef, yeni türler yaratma yeteneğini ekler. Alias, bir typedef'in işini ve hatta daha fazlasını yapabilir. Aşağıda, tür dönüştürme yeteneği sağlayan std.conv başlığını kullanan takma adı kullanmaya yönelik basit bir örnek gösterilmektedir.
import std.stdio;
import std.conv:to;
alias to!(string) toString;
void main() {
int a = 10;
string s = "Test"~toString(a);
writeln(s);
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Test10
Yukarıdaki örnekte, to! String (a) kullanmak yerine, onu toString takma adına atadık ve anlaşılmasını daha kolay ve basit hale getirdik.
Tuple takma adı
Bir Tuple için takma ad ayarlayabileceğimiz başka bir örneğe bakalım.
import std.stdio;
import std.typetuple;
alias TypeTuple!(int, long) TL;
void method1(TL tl) {
writeln(tl[0],"\t", tl[1] );
}
void main() {
method1(5, 6L);
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
5 6
Yukarıdaki örnekte, tür demeti takma ad değişkenine atanmıştır ve yöntem tanımını ve değişkenlere erişimi basitleştirir. Bu tür tupleları yeniden kullanmaya çalıştığımızda bu tür bir erişim daha da yararlıdır.
Veri Türleri için Takma Ad
Çoğu zaman, uygulama genelinde kullanılması gereken ortak veri türlerini tanımlayabiliriz. Birden fazla programcı bir uygulamayı kodladığında, bir kişinin int, başka bir double vb. Kullandığı durumlar olabilir. Bu tür çatışmaları önlemek için, genellikle veri türleri için türler kullanırız. Aşağıda basit bir örnek gösterilmektedir.
Misal
import std.stdio;
alias int myAppNumber;
alias string myAppString;
void main() {
myAppNumber i = 10;
myAppString s = "TestString";
writeln(i,s);
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
10TestString
Sınıf Değişkenleri için takma ad
Genellikle, alt sınıftaki üst sınıfın üye değişkenlerine erişmemiz gereken bir gereksinim vardır, bu, muhtemelen farklı bir ad altında takma adla mümkün olabilir.
Sınıflar ve kalıtım kavramında yeniyseniz, bu bölüme başlamadan önce sınıflar ve kalıtım hakkındaki eğiticiye bir göz atın .
Misal
Aşağıda basit bir örnek gösterilmektedir.
import std.stdio;
class Shape {
int area;
}
class Square : Shape {
string name() const @property {
return "Square";
}
alias Shape.area squareArea;
}
void main() {
auto square = new Square;
square.squareArea = 42;
writeln(square.name);
writeln(square.squareArea);
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Square
42
Alias This
Diğer ad bu, kullanıcı tanımlı türlerin otomatik tür dönüştürme yeteneğini sağlar. Sözdizimi aşağıda gösterilmektedir, burada anahtar sözcükler ve bu üye değişkeni veya üye işlevinin her iki tarafına da yazılmıştır.
alias member_variable_or_member_function this;
Misal
Bu takma adın gücünü göstermek için aşağıda bir örnek gösterilmiştir.
import std.stdio;
struct Rectangle {
long length;
long breadth;
double value() const @property {
return cast(double) length * breadth;
}
alias value this;
}
double volume(double rectangle, double height) {
return rectangle * height;
}
void main() {
auto rectangle = Rectangle(2, 3);
writeln(volume(rectangle, 5));
}
Yukarıdaki örnekte, bu yöntemin takma adı yardımıyla yapı dikdörtgeninin çift değere dönüştürüldüğünü görebilirsiniz.
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
30