표현식의 암시적 캐스팅
암시적 캐스팅 또는 암시적 변환은 Architect가 한 데이터 유형의 암시적 캐스팅을 취하고 결과 값 유형을 다른 데이터 유형으로 변환하는 작업입니다. Architect는 유효한 표현식 텍스트의 결과 값 유형에 대해서만 암시적 변환을 수행합니다. 암시적 캐스팅은 유형 계층 또는 유형 표현의 특정 기능을 활용합니다. 건축가는 i를 수행합니다.한 유형의 표현식이 있을 때 암시적 변환 해당 유형을 허용하지 않는 특정 변수의 컨텍스트에서 사용됩니다.
Architect에서 흐름 작성자는 "like" 유형의 값만 할당할 수 있습니다. 문자열 변수는 문자열 값 할당만 가질 수 있습니다. 그러나 Architect 파서는 각 표현식의 데이터 유형을 평가하고 가능한 경우 암시적 캐스트를 통해 흐름 작성자에 대한 결과를 조정합니다.
다음 예에서 흐름 작성자는 정수가 문자열로 표현되기를 원합니다. 런타임에 표현식 결과 문자열 "5"가 생성됩니다.
ToString(5)
ToString(3+4)
이 표현은 다음과 같이 간주됩니다. 명시적 캐스트. 흐름 작성자는 정수를 문자열로 변환하도록 파서에 지시했습니다. 암시적 캐스트는 다음에서만 발생합니다. 결과 유형 입력된 표현식 텍스트의
흐름 작성자는 다음과 같은 유효한 문자열 표현식을 입력할 수도 있습니다.
3+4
"like" 유형과 관련하여 이 표현식은 문자열에 정수를 할당하려고 시도하기 때문에 유효하지 않지만 문자열 변수는 문자열 할당만 가질 수 있다는 것을 알고 있습니다. 하지만 함께 암시적 캐스팅, 건축가는 표현식을 해결할 수 있습니다. 파서는 표현식 주위에 ToString 값을 추가하여 정수를 문자열로 변환하여 다음 표현식을 반환합니다.
ToString(3+4)
Architect는 암시적 캐스트를 수행할 때 표현식의 표현식 편집 대화 상자에 변환 세부 정보가 포함된 메시지를 반환합니다.
암시적 캐스트는 하나의 매개변수를 사용하는 유형 캐스트 함수에서만 수행됩니다. 여러 개의 허용된 매개변수가 있는 유형 캐스트 함수는 파서가 첫 번째 매개변수 이후의 모든 매개변수에 대한 작업을 처리할 수 없기 때문에 암시적 변환의 후보가 아닙니다.
이전 예에서 결과는 정수 값 7이라는 것을 알았습니다. 그러나 디자인 타임에 값이 무엇인지 알 수 없는 경우를 예로 들어 보겠습니다.
Flow.MyInteger + 5
이 경우 Flow.MyInteger는 정수 데이터 유형입니다. 개념적으로 결과 값은 "Flow.MyInteger 값에 5 값을 더한 값"이라는 것을 알고 있습니다. Flow.MyInteger의 값이 무엇인지 모르지만 우리는 ~하다 그것이 정수 값에 또 다른 정수 값을 더한 값이라는 것을 알고 있습니다. 그러면 정수 값이 됩니다. 이것은 암시적 캐스팅에 중요합니다. 정수 + 정수 = 정수의 결과이며 결과 유형은 문자열입니다.
파서는 표현식을 평가할 때 결과 유형이 문자열이 아니지만 표현식 텍스트의 결과가 정수인 것으로 해석합니다. 따라서 ToString을 암시적 캐스트로 추가하고 결과를 원하는 결과인 문자열로 변환합니다.
이전 예에서와 같이 Architect는 암시적 캐스트를 수행할 때 표현식의 Edit Expression 대화 상자에 변환 세부 정보가 포함된 메시지를 반환합니다. 이러한 변환 메시지는 표현식 편집 대화 상자에만 나타납니다. 필드 수준 리터럴 또는 표현식 모드에서는 표시되지 않습니다. 그러나 필드 수준에서 입력하든 표현식 편집 대화 상자에서 입력하든 Architect는 표현식을 변환합니다.
파서는 결과가 유효한 표현식인 경우에만 암시적 캐스트를 수행합니다. 그러나 결과가 유효하지 않은 예를 생각해 보겠습니다. 초기 릴리스에서 Architect는 세 가지 언어에 대한 런타임 데이터 재생만 지원한다는 것을 알고 있습니다. en-US, fr-CA 및 es-US. 따라서 흐름이 en-US, fr-CA 또는 es-US에서 실행되는 경우 다음 표현식이 작동합니다.
ToAudioNumber(5005)
건축가는 3개 언어 중 5005라는 숫자를 표현할 수 있습니다. 그러나 플로우 작성자가 r을 포함하는 3개 언어 중 하나가 아닌 지원 언어로 체코 공화국(cs-CZ)을 추가하면 어떻게 될까요?언타임 데이터 재생 지원? 다음 예에서는 Architect가 잘못된 표현식을 처리하는 방법을 보여줍니다.
흐름 작성자가 정수 입력을 시작하면 Architect는 즉시 오류 메시지를 반환합니다.
흐름 작성자가 ToAudioNumber 함수를 명시적 캐스트로 추가하면 Architect는 여전히 오류를 반환합니다.