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