Pemrograman D - Alias
Alias, sesuai namanya memberikan nama alternatif untuk nama yang sudah ada. Sintaks untuk alias ditampilkan di bawah ini.
alias new_name = existing_name;
Berikut ini adalah sintaks yang lebih lama, kalau-kalau Anda merujuk beberapa contoh format yang lebih lama. Sangat tidak disarankan untuk menggunakan ini.
alias existing_name new_name;
Ada juga sintaks lain yang digunakan dengan ekspresi dan diberikan di bawah ini di mana kita bisa langsung menggunakan nama alias sebagai pengganti ekspresi.
alias expression alias_name ;
Seperti yang Anda ketahui, typedef menambahkan kemampuan untuk membuat tipe baru. Alias dapat melakukan pekerjaan typedef dan bahkan lebih. Contoh sederhana untuk menggunakan alias ditunjukkan di bawah ini yang menggunakan header std.conv yang menyediakan kemampuan konversi tipe.
import std.stdio;
import std.conv:to;
alias to!(string) toString;
void main() {
int a = 10;
string s = "Test"~toString(a);
writeln(s);
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Test10
Dalam contoh di atas alih-alih menggunakan to! String (a), kami menetapkannya ke nama alias toString sehingga lebih nyaman dan lebih sederhana untuk dipahami.
Alias untuk Tuple
Mari kita lihat contoh lain di mana kita dapat mengatur nama alias untuk Tuple.
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);
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
5 6
Dalam contoh di atas, tipe tupel ditugaskan ke variabel alias dan menyederhanakan definisi metode dan akses variabel. Jenis akses ini bahkan lebih berguna ketika kami mencoba menggunakan kembali tupel jenis tersebut.
Alias untuk Tipe Data
Sering kali, kami mungkin mendefinisikan tipe data umum yang perlu digunakan di seluruh aplikasi. Ketika beberapa programmer membuat kode aplikasi, ini bisa menjadi kasus di mana satu orang menggunakan int, double lainnya, dan seterusnya. Untuk menghindari konflik seperti itu, kami sering menggunakan tipe untuk tipe data. Contoh sederhana ditunjukkan di bawah ini.
Contoh
import std.stdio;
alias int myAppNumber;
alias string myAppString;
void main() {
myAppNumber i = 10;
myAppString s = "TestString";
writeln(i,s);
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
10TestString
Alias untuk Variabel Kelas
Seringkali ada persyaratan di mana kita perlu mengakses variabel anggota superclass di subclass, ini dapat dilakukan dengan alias, mungkin dengan nama yang berbeda.
Jika Anda baru mengenal konsep kelas dan warisan, lihat tutorial tentang kelas dan warisan sebelum memulai dengan bagian ini.
Contoh
Contoh sederhana ditunjukkan di bawah ini.
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);
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Square
42
Alias ini
Alias ini memberikan kemampuan konversi tipe otomatis dari tipe yang ditentukan pengguna. Sintaksnya ditampilkan di bawah ini di mana kata kunci alias dan ini ditulis di kedua sisi variabel anggota atau fungsi anggota.
alias member_variable_or_member_function this;
Contoh
Contoh ditunjukkan di bawah ini untuk menunjukkan kekuatan alias ini.
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));
}
Pada contoh di atas, Anda dapat melihat bahwa struct persegi panjang diubah menjadi nilai ganda dengan bantuan alias metode ini.
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
30