D Programlama - Numaralar

Adlandırılmış sabit değerleri tanımlamak için bir numaralandırma kullanılır. Numaralandırılmış bir tür,enum anahtar kelime.

enum dizimi

Bir enum tanımının en basit biçimi şudur -

enum enum_name {  
   enumeration list 
}

Nerede,

  • Enum_name numaralandırma türü adını belirtir.

  • Numaralandırma Listesi tanımlayıcıları virgülle ayrılmış bir listesidir.

Numaralandırma listesindeki sembollerin her biri, kendisinden önce gelen sembolden büyük olan bir tamsayı değerini ifade eder. Varsayılan olarak, ilk numaralandırma sembolünün değeri 0'dır. Örneğin -

enum Days { sun, mon, tue, wed, thu, fri, sat };

Misal

Aşağıdaki örnek, enum değişkeninin kullanımını gösterir -

import std.stdio;

enum Days { sun, mon, tue, wed, thu, fri, sat };

int main(string[] args) {
   Days day;

   day = Days.mon;
   writefln("Current Day: %d", day); 
   writefln("Friday : %d", Days.fri); 
   return 0;
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Current Day: 1 
Friday : 5

Yukarıdaki programda bir numaralandırmanın nasıl kullanılabileceğini görebiliriz. Başlangıçta, kullanıcı tanımlı numaralandırma Günlerimizin day adında bir değişken oluşturuyoruz . Sonra nokta operatörünü kullanarak bunu mon olarak ayarladık . Depolanan mon değerini yazdırmak için writeefln yöntemini kullanmamız gerekir. Ayrıca türü de belirtmeniz gerekir. Tamsayı türündedir, bu nedenle yazdırma için% d kullanırız.

Adlandırılmış Enums Özellikleri

Yukarıdaki örnek, numaralandırma için Days adını kullanır ve adlandırılmış numaralandırmalar olarak adlandırılır. Bu adlandırılmış numaralandırmalar aşağıdaki özelliklere sahiptir -

  • Init - Numaralandırmadaki ilk değeri başlatır.

  • min - En küçük numaralandırma değerini döndürür.

  • max - Numaralandırmanın en büyük değerini döndürür.

  • sizeof - Numaralandırma için depolama boyutunu döndürür.

Özelliklerden yararlanmak için önceki örneği değiştirelim.

import std.stdio;

// Initialized sun with value 1 
enum Days { sun = 1, mon, tue, wed, thu, fri, sat };

int main(string[] args) { 
   writefln("Min : %d", Days.min); 
   writefln("Max : %d", Days.max);
   writefln("Size of: %d", Days.sizeof); 
   return 0; 
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Min : 1
Max : 7
Size of: 4

Anonim Enum

İsimsiz numaralandırmaya anonim enum denir. Bir örnekanonymous enum aşağıda verilmiştir.

import std.stdio; 
 
// Initialized sun with value 1 
enum { sun , mon, tue, wed, thu, fri, sat }; 
 
int main(string[] args) { 
   writefln("Sunday : %d", sun); 
   writefln("Monday : %d", mon); 
   return 0; 
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Sunday : 0
Monday : 1

Anonim numaralandırmalar, adlandırılmış numaralandırmalarla hemen hemen aynı şekilde çalışır ancak max, min ve sizeof özelliklerine sahip değildirler.

Temel Tür Sözdizimi ile Enum

Temel türle numaralandırma sözdizimi aşağıda gösterilmiştir.

enum :baseType {  
   enumeration list 
}

Baz türlerden bazıları long, int ve string içerir. Uzun kullanan bir örnek aşağıda gösterilmiştir.

import std.stdio;
  
enum : string { 
   A = "hello", 
   B = "world", 
} 
  
int main(string[] args) { 
   writefln("A : %s", A); 
   writefln("B : %s", B); 
   
   return 0; 
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

A : hello
B : world

Daha fazla özellik

D numaralandırma, birden çok türle bir numaralandırmada birden çok değerin başlatılması gibi özellikler sağlar. Aşağıda bir örnek gösterilmiştir.

import std.stdio;
  
enum { 
   A = 1.2f,  // A is 1.2f of type float 
   B,         // B is 2.2f of type float 
   int C = 3, // C is 3 of type int 
   D          // D is 4 of type int 
}
  
int main(string[] args) { 
   writefln("A : %f", A); 
   writefln("B : %f", B); 
   writefln("C : %d", C); 
   writefln("D : %d", D);  
   return 0; 
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

A : 1.200000
B : 2.200000
C : 3
D : 4