특성 소개

특성은 파트에 대해 특성 옵션을 설정합니다. 일반적으로 파트를 작성할 때 특성을 지정하며 특성은 정적입니다. 그러나 특정 환경에서 특성을 동적으로 변경할 수 있습니다.

사용 가능한 특성은 각 파트 및 각 스테레오타입에 대해 다르므로 파트를 작성할 때 적절한 특성을 확인하십시오. 일부 파트에는 필수 특성이 있지만 대부분의 특성은 선택사항입니다.

가장 일반적인 유형의 특성은 파트의 옵션을 설정하는 이름 값 쌍인 단순 특성입니다. 대부분의 파트는 파트 정의 시작에서 중괄호( { } ) 안에 특성의 이름 및 특성의 값을 나열하여 하나 이상의 단순 특성을 승인합니다. 파트에 둘 이상의 특성을 지정하는 경우 쉼표로 이름 값 쌍을 구분하십시오.
DataItem cost money(10,2) 
    {Currency = yes,
     CurrencySymbol = "$"}
end
여는 중괄호로 시작하고 닫는 중괄호로 끝나는 코드 블록(즉, 특성 및 해당 값의 목록)은 세트 값 블록이라고도 합니다.

특성은 특정 상황에서만 유용합니다. 예를 들어, DataItem 파트는 사용자 인터페이스의 특정 유형에만 적용되는 특성을 포함할 수 있습니다. 이전 예제에서와 같이 DataItem 파트에서 특성 통화currencySymbol을 지정하여 DataItem이 통화 값을 나타냄을 표시하고 값 표시에 사용된 금융 기호를 지정할 수 있습니다. EGL 언어 참조의 주제 "currencySymbol"에서 콘솔 사용자 인터페이스 애플리케이션에서가 아니라 웹 페이지에서 사용될 때 이 특성에 영향이 미침을 알 수 있습니다.

특성 값

각 특성에 올바른 값을 제공해야 합니다. 일부 특성은 문자열 리터럴을 승인하고, 일부 특성은 "yes" 또는 "no" 값을 승인하며 일부 특성은 열거라고 하는 옵션 목록에서 값을 승인하며 일부 특성은 배열 리터럴을 승인합니다. 대부분의 경우 변수 또는 상수를 특성 값으로 사용할 수 없습니다. 다시 말해서, 통화 특성 값에 대해 "예" 또는 "아니오"로 설정된 부울 변수 또는 문자열 변수를 사용할 수 없습니다. 리터럴의 인용되지 않은 "예" 또는 "아니오" 값을 지정해야 합니다.

그러나 일부 특성에서 변수 또는 파트의 이름을 값으로 제공해야 합니다. 이 경우 특성이 변수 또는 파트의 값을 사용하지 않으며 변수 또는 파트 자체를 참조합니다.

일부 특성은 이전 버전 또는 마이그레이션된 코드와의 호환성을 위해 제공되며 새 EGL 애플리케이션에는 필요하지 않습니다. 새 코드에 제공되는 특성 및 호환성에 사용되는 특성을 알려면 특정 파트 및 해당 특성을 다루는 EGL 언어 참조 주제를 참조하십시오.

특성 상속 및 대체

다른 파트를 기반으로 파트를 작성하는 경우 새 파트는 이전 파트의 특성을 상속합니다.
DataItem myRedVar int {color = red} end

Record myRedRecord type BasicRecord
    myField myRedVar;
end
이 경우 myField 필드는 color 특성을 지정한 경우에서와 같이 동작합니다.
그러나 특성은 다음 예제에서와 같이 대부분의 변수 간에 전송되지 않습니다.
myRedInt int {color = red};
myBlueInt int {color = blue};
myBlueInt = myRedInt;
이 경우에도 myBlueInt에는 blue로 설정한 color 특성이 있습니다.

참조 변수는 특성 전송에 대한 예외입니다. EGL 언어 참조에서 "특성"을 참조하십시오.

다음 예제와 같이 특성을 명시적으로 대체할 수 있습니다.
DataItem myRedVar int {color = red} end

Record myBlueRecord type BasicRecord
    myField myRedVar {color = blue};
end
이 경우 필드 myFieldred 값을 blue 값으로 대체합니다.
이 방법은 합법적이지만 하나의 파트 또는 변수에 대해 특성을 두 번 정의하는 것은 권장되지 않습니다. 마지막 특성 스펙은 다음 예제에서와 같이 값을 설정합니다.
myBlueVar int {color = red, color = blue};
이 경우 두 번째 정의가 첫 번째 정의를 대체하므로 변수의 color 특성은 blue로 설정됩니다.