new 연산자

EGL new 연산자를 사용하여 지정된 유형의 스토리지를 동적으로 작성할 수 있습니다. 참조 유형 변수를 작성 중인 경우 new는 스토리지에 대한 참조를 작성하고 그렇지 않으면 스토리지 자체를 작성합니다.

new 연산자를 사용하여 값 설정 블록을 지정할 수 있습니다. 값 설정 블록은 널 입력 가능 변수의 널 플래그를 자동으로 설정 해제합니다. 자세한 정보는 값 설정 블록의 내용을 참조하십시오. 예제는 이 주제의 "new 연산자를 사용하는 경우"를 참조하십시오.

구문

new
문의 구문 다이어그램
partName
EGL 파트의 이름입니다.

new 연산자를 사용하는 경우

new 연산자가 효율적으로 사용되는 경우는 이름을 지정하지 않고 스토리지를 작성하는 데 사용하는 경우뿐입니다. 다음 예제에서는 함수가 사전을 매개변수로 사용합니다.
func( new Dictionary{ key1 = 3, key2 = "Hello", key3 = false } );
다음 예제에서는 레코드에 다른 레코드 유형의 배열인 필드가 포함되어 있습니다. 이 경우 new 연산자를 사용해야 합니다.
record CustomerArray
	myCustomers CustomerRec[] = 
    [ new CustomerRec { idNum = 101 }, 
      new CustomerRec { idNum = 102 } ];
end

CustomerRec 변수를 선언하여 변수에 넣는 대체 방법은 불가능합니다. 레코드의 초기자(initializer)는 해당 레코드에 있는 필드 이외의 변수에 액세스할 수 없습니다.

다음과 같은 방법으로 변수 선언에서 new 연산자를 사용할 수 있습니다.
myInt INT = new INT;
이 선언에는 다음과 같은 표준 선언과 비교하여 이점은 없고 한 가지 중요한 단점이 있습니다.
myInt INT;

new 연산자를 사용하는 경우 스토리지는 두 번 예약됩니다. 먼저 지정의 왼쪽에서 INT에 사용할 스토리지를 작성하고 이름을 myInt로 지정합니다. 그런 다음 new 연산자가 두 번째 INT를 작성하고 해당 값을 첫 번째 INT에 지정합니다. 두 번째 INT는 다시 사용되지 않습니다.

다음 선언을 사용하여 초기값이 널이 아닌 널 입력 가능 변수(물음표로 표시됨)를 작성할 수 있습니다.
myInt INT? = new INT;
왼쪽은 널 입력 가능 변수를 작성합니다. new 연산자는 널 입력 가능이 아닌 INT를 작성하고 해당 값을 첫 번째 INT에 지정합니다. 단일 변수를 작성하는 다음 행을 사용하여 동일한 결과를 얻을 수 있습니다.
myInt INT?{};