D 프로그래밍-불변

우리는 종종 가변적 인 변수를 사용하지만 가변성이 필요하지 않은 경우가 많습니다. 이러한 경우 불변 변수를 사용할 수 있습니다. 불변 변수를 사용할 수있는 몇 가지 예가 아래에 나와 있습니다.

  • 절대 변하지 않는 pi 와 같은 수학 상수의 경우 .

  • 값을 유지하고 싶은 배열의 경우 변이의 요구 사항이 아닙니다.

불변성은 특정 작업이 특정 변수를 변경하지 않도록 보장하는 변수가 불변인지 또는 가변인지를 이해할 수있게합니다. 또한 특정 유형의 프로그램 오류 위험을 줄입니다. D의 불변성 개념은 const 및 불변 키워드로 표시됩니다. 두 단어 자체는 의미가 비슷하지만 프로그램에서의 책임이 다르며 때로는 호환되지 않습니다.

D의 불변성 개념은 const 및 불변 키워드로 표시됩니다. 두 단어 자체는 의미가 비슷하지만 프로그램에서의 책임이 다르며 때로는 호환되지 않습니다.

D의 불변 변수 유형

변경할 수없는 정의 변수에는 세 가지 유형이 있습니다.

  • 열거 형 상수
  • 불변 변수
  • const 변수

D의 열거 형 상수

열거 형 상수를 사용하면 상수 값을 의미있는 이름에 연결할 수 있습니다. 간단한 예가 아래에 나와 있습니다.

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"); 
   } 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

The day is Sunday

D의 불변 변수

불변 변수는 프로그램 실행 중에 결정될 수 있습니다. 그것은 단지 초기화 후에 불변이되도록 컴파일러에 지시합니다. 간단한 예가 아래에 나와 있습니다.

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); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

immutable(int)4 
immutable(int)100

위의 예에서 데이터 유형을 다른 변수로 전송하고 인쇄하는 동안 stringof를 사용하는 방법을 볼 수 있습니다.

D의 상수 변수

상수 변수는 불변과 유사하게 수정할 수 없습니다. 불변 변수는 불변 매개 변수로 함수에 전달 될 수 있으므로 const보다 불변을 사용하는 것이 좋습니다. 이전에 사용한 것과 동일한 예제가 아래와 같이 const에 대해 수정되었습니다.

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); 
}

위의 코드를 컴파일하고 실행하면 다음 결과가 생성됩니다.

const(int)7 
const(int)100

D의 변경 불가능한 매개 변수

const는 원래 변수가 변경 가능한지 또는 변경할 수 없는지에 대한 정보를 지우므로 변경 불가능을 사용하면 원래 유형이 유지 된 다른 함수를 전달합니다. 간단한 예가 아래에 나와 있습니다.

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); 
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

0: 1 
1: 2