Found an issue with the book? Report it on Github.
앞에서 model
정의라는 내용을 소개했습니다. 아직 까지는 본 것이 없겠지만, 모델리카에는 record
자료형도 포함되어 있습니다. record
는 model
과 마찬가지로 변수를 가질 수 있지만 방정식을 포함할 수는 없습니다. 레코드는 주로 데이터를 함께 그룹화하는 데 사용합니다. 그러나 곧 보게 되겠지만 주석(Annotations) 에서 다루는 것 처럼 관련된 데이터를 설명하는 데에도 매우 유용합니다.
record
정의는 본질적으로 model
정의와 비슷하지만 방정식이 없습니다.
record RecordName "Description of the record"
// Declarations for record variables
end RecordName;
model
과 마찬가지로 정의는 정의되는 레코드의 이름으로 시작하고 끝나며, record
에 대한 설명은 이름 뒤에 문자열로 포함될 수 있습니다. 레코드와 관련된 모든 변수는 record
정의 내에서 선언됩니다.
다음은 record
정의의 모든 예입니다.
record Vector "A vector in 3D space"
Real x;
Real y;
Real z;
end Vector;
record Complex "Representation of a complex number"
Real re "Real component";
Real im "Imaginary component";
end Complex;
이제 record
를 정의하는 방법을 알았으니 레코드를 생성하는 방법을 알아야 합니다. record
가 되는 변수를 선언하는 경우 선언 자체가 record
의 인스턴스를 생성하고 수정을 사용하여 레코드 내부의 변수 값을 지정할 수 있습니다.
parameter Vector v(x=1.0, y=2.0, z=0.0);
그러나 변수가 아닌 record
의 인스턴스를 생성하려는 경우가 있습니다.(예:, 수식에서 사용하기 위해 함수에 인수로 전달하거나 수정에 사용).각 record
정의에 대해 record
와 동일한 이름 으로 함수가 자동으로 생성됩니다. 이 기능을 "레코드 생성자"라고 합니다. 레코드 생성자는 record
정의 내부의 변수와 일치하는 입력 인수를 가지며 해당 record
의 인스턴스를 반환합니다. 따라서 위의 Vector
정의의 경우 다음과 같이 레코드 생성자를 사용하여 parameter
를 초기화할 수도 있습니다.
parameter Vector v = Vector(x=1.0, y=2.0, z=0.0);
이 경우 v
값은 레코드 생성자에 대한 호출인 표현(expression) Vector(x=1.0, y=2.0, z=0.0)
에서 나옵니다.