delphi와 변장 매개 변수 - 가변 형식 개방 그룹 (3)
소프트 유형의 열린 배열
이제 글에서 언급한 가변 형식의 개방 그룹으로 돌아가겠습니다. 가변 형식의 개방 그룹은 하나의 과정이나 함수에 서로 다른 형식 표현식의 그룹을 전달할 수 있습니다.변형의 열린 배열 매개변수를 포함하는 방법을 정의하려면 매개변수 유형으로 "array of const"또는 "array of TVarRec"를 지정해야 합니다.【주1】
//
procedure DoSomething(A: array of const);
procedure DoSomething(A: array of TVarRec);
array of const는 매개변수를 정의할 때 array of TVarRec와 같습니다.array of const는 매개 변수의 유형을 소프트 유형의 개방형 배열 매개 변수(array of TVarRec)로만 지정할 수 있으며 배열 변수를 정의할 수는 없지만 array of TVarRec는 TVarRec 유형의 배열 변수를 정의할 수 있으며 이 배열 변수를 매개 변수로 소프트 유형의 개방형 배열 매개 변수에 전달하는 방법도 사용할 수 있습니다.
var
arr:array of const;//
arr:array of TVarRec;//
DoSomething(arr);//
Array of const 유형의 매개 변수가 포함된 함수 내부에 사용되는 TVarRec 유형은 컴파일러가 자동으로 열린 배열 구조기를 통해 열린 배열 매개 변수의 실참을 구성하여 구조기의 모든 요소를 TVarRec 값으로 변환하고, VType 필드는 각 TVarRec 값의 간단한 유형을 나타내며, 가변 유형 상수(예를 들어 vtInteger 유형의 VInteger)는 TVarRec 구조에 전달된 표기 필드의 값을 나타낸다.
비록 TVarRec는 가변 유형으로 각종 기초 데이터 유형을'수용'할 수 있지만 이런'수용'은 개방된 그룹 구조기를 통해 이루어진다. 컴파일러 자체가 자동으로 실현될 수 없다. 즉, TVarRec는 다른 데이터 형식과 호환되지 않고 다른 유형의 그룹 변수를 개방된 그룹 파라미터에 전달할 수 없는 방법이다.
DoSomething([1,2,'a','tht']);//
var
arr:array[0..10] of Integer;
...//
DoSomething(arr);//
개방 그룹 구조기
개방수 그룹 구조기는 함수나 과정 호출에서 직접 그룹을 구성할 수 있도록 허용한다.그것들은 개방된 그룹 파라미터나 가변 유형의 개방된 그룹 파라미터를 전달하는 데만 사용됩니다.
집합 구조기와 비슷하게 개방수 그룹 구조기는 네모난 괄호로 봉하고 쉼표로 구분된 표현식 서열이다.개방수 그룹 구조기는 값 매개 변수나 상수 매개 변수를 전달하는 데만 사용됩니다.구조기의 표현식은 개방된 그룹 매개 변수의 기본 형식과 호환되어야 합니다.소프트 유형의 열린 배열 매개변수의 경우 표현식은 서로 다른 유형일 수 있습니다.[주2]
주 1: 참조http://www.87871.cn/tool/help/Pascal/Source/Procedures%20and%20functions/Variant%20open%20array%20parameters.htm
주2: 참조http://www.87871.cn/tool/help/Pascal/Source/Procedures%20and%20functions/Open%20array%20constructors.htm
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.