D Programlama - Değişmez

Genellikle değişken olan değişkenleri kullanırız, ancak birçok durumda değişebilirlik gerekli değildir. Bu gibi durumlarda değişmez değişkenler kullanılabilir. Aşağıda immutable değişkenin kullanılabileceği birkaç örnek verilmiştir.

  • Pi gibi asla değişmeyen matematik sabitleri durumunda .

  • Değerleri korumak istediğimiz diziler durumunda ve bu mutasyonun gerekliliği değildir.

Değişmezlik, değişkenlerin değişmez mi yoksa değiştirilebilir mi olduğunu anlamayı mümkün kılarak, belirli işlemlerin belirli değişkenleri değiştirmediğini garanti eder. Ayrıca, belirli türdeki program hatası riskini de azaltır. D'nin değişmezlik kavramı, sabit ve değişmez anahtar kelimelerle temsil edilir. İki kelimenin kendileri anlam bakımından birbirine yakın olmasına rağmen, programlardaki sorumlulukları farklıdır ve bazen birbirleriyle uyumsuzdurlar.

D'nin değişmezlik kavramı, sabit ve değişmez anahtar kelimelerle temsil edilir. İki kelimenin kendileri anlam bakımından birbirine yakın olmasına rağmen, programlardaki sorumlulukları farklıdır ve bazen birbirleriyle uyumsuzdurlar.

D'deki Değişmez Değişkenlerin Türleri

Asla mutasyona uğratılamayan üç tür tanımlayıcı değişken vardır.

  • enum sabitleri
  • değişmez değişkenler
  • const değişkenleri

enum D'de Sabitler

Enum sabitleri, sabit değerleri anlamlı adlarla ilişkilendirmeyi mümkün kılar. Aşağıda basit bir örnek gösterilmektedir.

Misal

import std.stdio;

enum Day{ 
   Sunday = 1, 
   Monday,
   Tuesday, 
   Wednesday, 
   Thursday, 
   Friday, 
   Saturday 
} 
 
void main() { 
   Day day; 
   day = Day.Sunday;
   
   if (day == Day.Sunday) { 
      writeln("The day is Sunday"); 
   } 
}

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

The day is Sunday

D'deki Değişmez Değişkenler

Programın yürütülmesi sırasında değişmez değişkenler belirlenebilir. Sadece derleyiciye, başlatmadan sonra değişmez hale gelmesini yönlendirir. Aşağıda basit bir örnek gösterilmektedir.

Misal

import std.stdio; 
import std.random; 
 
void main() { 
   int min = 1; 
   int max = 10; 
   
   immutable number = uniform(min, max + 1); 
   // cannot modify immutable expression number 
   // number = 34; 
   typeof(number) value = 100;  
   
   writeln(typeof(number).stringof, number); 
   writeln(typeof(value).stringof, value); 
}

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

immutable(int)4 
immutable(int)100

Yukarıdaki örnekte, veri türünü başka bir değişkene aktarmanın ve yazdırırken stringof kullanmanın nasıl mümkün olduğunu görebilirsiniz.

D'deki Sabit Değişkenler

Const değişkenleri immutable'a benzer şekilde değiştirilemez. immutable değişkenler, değişmez parametreleri olarak işlevlere geçirilebilir ve bu nedenle sabit yerine immutable kullanılması önerilir. Daha önce kullanılan aynı örnek, aşağıda gösterildiği gibi const için değiştirilmiştir.

Misal

import std.stdio; 
import std.random; 
 
void main() { 
   int min = 1; 
   int max = 10; 
   
   const number = uniform(min, max + 1); 
   // cannot modify const expression number| 
   // number = 34; 
   typeof(number) value = 100; 
   
   writeln(typeof(number).stringof, number); 
   writeln(typeof(value).stringof, value); 
}

Yukarıdaki kodu derler ve çalıştırırsak, bu aşağıdaki sonucu üretir -

const(int)7 
const(int)100

D'de Değişmez Parametreler

const, orijinal değişkenin değiştirilebilir mi yoksa değiştirilemez mi olduğu hakkındaki bilgileri siler ve dolayısıyla immutable'ı kullanmak, onu orijinal tür korunarak diğer işlevleri geçirmesini sağlar. Aşağıda basit bir örnek gösterilmektedir.

Misal

import std.stdio; 
 
void print(immutable int[] array) { 
   foreach (i, element; array) { 
      writefln("%s: %s", i, element); 
   } 
}
  
void main() { 
   immutable int[] array = [ 1, 2 ]; 
   print(array); 
}

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

0: 1 
1: 2