다형성은 VI와 함수가 다른 데이터 타입의 입력 데이터를 받을 수 있도록 자동으로 적응하는 것입니다. 함수의 다형성 정도는 다양하며, 다형성 입력이 없거나, 일부 또는 전체 입력이 다형성일 수 있습니다. 일부 함수의 입력은 숫자값과 불리언 값을 받습니다. 일부는 숫자값 또는 문자열을 받습니다. 일부는 스칼라 숫자값뿐만 아니라 숫자값의 배열, 숫자값의 클러스터, 숫자값 클러스터의 배열 등을 받습니다. 일부는 1차원 배열만 받을 수 있는데, 배열의 원소는 어떤 타입도 될 수 있습니다. 일부 함수는 복소수 값을 포함한 모든 타입의 데이터를 받습니다. 또한, 다형성 단위를 생성하고 사용할 수 있습니다.

숫자형 변환

모든 숫자형은 다른 숫자형으로 변환할 수 있습니다. 다른 형의 둘 이상의 숫자 입력을 하나의 함수에 연결할 때, 일반적으로 함수는 더 크고 넓은 형으로 데이터를 반환합니다. 함수는 실행하기 전에 작은 형을 가장 넓은 형으로 강제 변환하며, LabVIEW는 변환이 일어난 터미널에 강제 변환점을 놓습니다.

나누기, 사인, 코사인과 같은 일부 함수는 기본적으로 부동소수 출력을 생성합니다. 이 입력에 정수를 연결하는 경우, 해당 함수는 계산을 수행하기 전에 정수를 배정도 부동소수로 변환합니다. 그러나 대부분의 숫자형 함수를 설정하여 지정한 데이터 타입으로 반환할 수 있습니다.

부동소수 스칼라 값의 경우, 일반적으로 배정도 부동소수를 사용하는 것이 가장 좋습니다. 단정도 부동소수는 크기가 작아서 런타임을 거의 또는 전혀 저장하지 못하고 쉽게 오버플로우가 발생할 수 있습니다. 예를 들어, 분석 라이브러리는 배정도 부동소수를 사용합니다. 꼭 필요한 경우에만 확장형 부동소수를 사용해야 합니다. 확장형 연산의 성능과 정밀도는 플랫폼에 따라 다양합니다.

정수의 경우, 일반적으로 32 비트 부호있는 정수를 사용하는 것이 가장 좋습니다.

출력을 다른 숫자형을 가진 대상에 연결한 경우, LabVIEW는 다음 원칙에 따라서 데이터를 변환합니다:

  • 부호있는 또는 부호없는 정수를 부동소수로―LabVIEW는 데이터를 가장 가까운 값으로 변환합니다. 이 변환은 부동소수가 정수보다 더 정밀할 때 정확합니다. 정수가 부동소수보다 더 정밀할 경우, LabVIEW는 변환에서 최대한 정밀도를 유지합니다.
  • 부동소수를 부호있는 또는 부호없는 정수로―LabVIEW는 범위를 벗어나는 값을 정수의 최소 또는 최대값으로 보냅니다. For 루프의 반복 터미널과 같은 대부분의 정수 객체는 부동소수를 반올림합니다. LabVIEW는 0.5의 소수 부분을 가장 가까운 짝수로 반올림합니다. 예를 들어, LabVIEW는 6.5를 7이 아니라 6으로 반올림합니다.
  • LabVIEW는 열거형을 부호없는 정수로 취급합니다―예를 들어, 부동소수 -1을 열거형으로 변환하는 경우, LabVIEW는 이 값을 열거형 범위 안으로 강제 변환합니다. 열거형의 범위가 0 ~ 25인 경우, LabVIEW는 이 값을 0으로 변환합니다.
  • 정수를 정수로―LabVIEW는 범위를 벗어나는 값을 정수의 최소 혹은 최대값으로 보내지 않습니다. 소스가 대상보다 더 작은 경우, LabVIEW는 부호있는 소스의 부호를 확장하고 부호없는 소스의 나머지 비트를 제로로 채웁니다. 소스가 대상보다 더 큰 경우, LabVIEW는 값의 최하위 비트만 복사합니다.
  • 정수, 부동소수, 또는 고정 소수점 수를 고정 소수점 수에 연결―LabVIEW는 고정 소수점 수에서 원하는 범위 밖의 값을 최대값과 최소값 범위내로 강제 변환시킵니다.

숫자형 함수의 다형성

연산 함수는 숫자 입력 데이터를 받습니다. 함수 설명에 언급된 일부 예외를 제외하면, 기본 출력은 입력과 같은 숫자 형이거나, 입력이 서로 다른 형일 경우, 기본 출력은 입력의 가장 넓은 형입니다. 예를 들어, 8 비트 정수와 16 비트 정수를 추가하는 경우에 기본 출력은 16 비트 정수입니다. 숫자형 함수의 출력을 설정한 경우, 지정한 셋팅이 기본 동작보다 우선으로 적용됩니다.

연산 함수는 숫자, 숫자 배열, 숫자 클러스터, 숫자 클러스터 배열, 복소수 등을 다룹니다. 사용 가능한 입력 타입의 공식적인 반복된 정의는 다음과 같습니다:

숫자 타입 = 숫자 스칼라 OR 배열 [숫자 타입] OR 클러스터 [숫자 타입]

숫자 스칼라는 부동소수, 정수, 또는 복소수 부동소수가 될 수 있습니다. LabVIEW에서 배열의 배열은 사용할 수 없습니다.

배열은 모든 크기의 모든 차원을 가질 수 있습니다. 클러스터는 어떤 원소 개수도 가질 수 있습니다. 함수의 출력 타입은 입력 타입과 숫자 형이 같습니다. 한 개의 입력을 가진 함수에서, 함수는 배열 또는 클러스터의 각 원소에 대하여 연산을 수행합니다.

두 개의 입력을 가진 함수에서는 다음의 입력 조합을 사용할 수 있습니다:

  • 동일한 경우―두 입력이 같은 구조이고, 출력도 입력과 같은 구조입니다.
  • 하나의 스칼라―한 개의 입력은 숫자 스칼라이고, 다른 입력은 배열이나 클러스터이며, 출력은 배열이나 클러스터입니다.
  • 배열―한 개의 입력은 숫자 배열이고, 다른 입력은 숫자 타입 자체이며, 출력은 배열입니다.

동일한 입력의 경우, LabVIEW는 구조의 해당 원소에서 함수를 수행합니다. 예를 들어, LabVIEW는 두 개의 배열을 원소별로 더합니다. 두 배열은 같은 차원이어야 합니다. 원소의 개수가 다른 배열을 더할 수 있습니다. 이 경우, 출력의 원소 개수는 가장 작은 입력의 개수와 같습니다. 클러스터는 원소의 개수가 같아야 하며, 각 원소는 같은 타입이어야 합니다.

하나의 스칼라와 배열 또는 클러스터를 연산하는 경우, LabVIEW는 스칼라와 구조의 각 원소에서 함수를 실행합니다. 예를 들어, LabVIEW는 배열의 차원과는 관계없이, 배열의 모든 원소에서 같은 숫자를 뺄 수 있습니다.

숫자 타입과 같은 타입의 배열을 연산하는 경우, LabVIEW는 배열의 각 원소에 함수를 수행합니다. 예를 들어, 그래프는 포인트의 배열입니다. 그리고 포인트는 두 개의 숫자 타입, xy의 클러스터입니다. 그래프를 x 방향으로 5 단위, y 방향으로 8 단위 오프셋하려면, 그래프에 포인트(5, 8)을 더하면 됩니다.

다음 설명은 [더하기] 함수의 가능한 다형성 조합을 보여줍니다.

불리언 함수의 다형성

논리 함수는 불리언 입력 데이터, 숫자형 입력 데이터 및 에러 클러스터를 받습니다. 입력이 숫자인 경우, LabVIEW는 비트 단위 계산을 수행합니다. 입력이 정수인 경우, 출력은 같은 형을 가집니다. 입력이 부동소수인 경우, LabVIEW는 32비트 정수로 반올림하며, 출력은 32비트 정수입니다. 입력이 에러 클러스터인 경우, LabVIEW는 에러 클러스터의 상태 파라미터에서 참 또는 거짓 값만을 입력 터미널에 전달합니다.

논리적 함수는 숫자나 불리언 값의 배열, 숫자나 불리언 값의 클러스터, 숫자나 불리언 값의 클러스터 배열 등을 다룹니다.

사용 가능한 입력 타입의 공식적인 반복된 정의는 다음과 같습니다:

논리적 타입 = 불리언 스칼라 OR 숫자 스칼라 OR 배열 [논리 타입] OR 클러스터 [논리 타입]

복소수와 배열의 배열은 허용되지 않습니다.

두 개의 입력을 가진 논리적 함수는 연산 함수와 같은 입력 조합을 가질 수 있습니다. 그러나 논리적 함수는 두 불리언 값 사이 또는 두 숫자 사이에서만 기본 연산이 가능하다는 제한이 있습니다. 예를 들어, 불리언 값과 숫자를 AND 연산할 수 없습니다. 다음 설명은 [AND] 함수를 위한 몇몇 불리언 값의 조합을 보여줍니다.

배열 함수의 다형성

대부분의 배열 함수는 모든 타입의 n차원 배열을 받습니다. 그러나, 함수의 와이어링 다이어그램에는 숫자 배열이 기본 데이터 타입으로 설명되어 있습니다.

문자열 함수의 다형성

[문자열 길이], [대문자로], [소문자로], [문자열 뒤집기], [문자열 회전]은 문자열, 문자열의 클러스터와 배열, 클러스터 배열을 받습니다. [대문자로]와 [소문자로] 함수는 숫자, 숫자의 클러스터, 숫자의 배열을 문자의 ASCII 코드로 해석하고 받습니다. 폭와 정밀도 입력은 반드시 스칼라여야 합니다.

문자열 변환 함수의 다형성

[경로를 문자열로][문자열을 경로로] 함수는 다형성입니다. 즉, 이 함수는 스칼라 값, 스칼라의 배열, 스칼라의 클러스터, 스칼라 클러스터의 배열 등을 다룹니다. 출력은 입력과 같은 조합이지만 타입은 새로운 것입니다.

추가적인 문자열에서 숫자로 함수의 다형성

[숫자를 10진수 문자열로], [숫자를 16진수 문자열로], [숫자를 8진수 문자열로], [숫자를 공학 문자열로], [숫자를 소수점형 문자열로], [숫자를 지수형 문자열로] 함수는 숫자의 배열 및 클러스터를 받아 문자의 배열 및 클러스터를 생성합니다. [10진수 문자열을 숫자로], [16진수 문자열을 숫자로], [8진수 문자열을 숫자로], [소수점/지수 문자열을 숫자로] 함수는 문자열의 배열 및 클러스터를 받아 숫자의 배열 및 클러스터를 생성합니다. 폭와 정밀도 입력은 반드시 스칼라여야 합니다.

클러스터 함수의 다형성

[묶기][풀기] 함수는 터미널에 객체를 연결하기 전까지는 개별 입력이나 출력 터미널의 데이터 타입을 보여주지 않습니다. 연결하면, 이 터미널은 대응되는 프런트패널 컨트롤 또는 인디케이터 터미널의 데이터 타입과 비슷하게 보입니다.

비교 함수의 다형성

비교 함수인 [같음?], [같지 않음?], [선택] 함수는 모든 타입의 입력을 받을 수 있습니다. 그러나 입력은 같은 타입이어야 합니다.

[크거나 같음?], [작거나 같음?], [보다 작음?], [보다 큼?], [최대 & 최소], [범위내 확인과 강제 변환] 함수는 복소수, 경로, 참조 번호를 제외한 모든 타입의 입력을 받습니다. 그러나 입력은 같은 타입이어야 합니다. 숫자, 문자열, 불리언 값, 문자열의 배열, 숫자의 클러스터, 문자열의 클러스터 등을 비교할 수 있습니다. 그러나 숫자를 문자열과 또는 문자열을 불리언 값과 비교할 수는 없습니다.

값과 제로를 비교하는 함수는 숫자 스칼라, 클러스터, 숫자 배열을 받습니다. 이 함수는 입력과 같은 데이터 구조의 불리언 값을 출력합니다.

[숫자/경로/참조 번호 아님?] 함수는 값을 제로와 비교하는 함수와 같은 입력 타입을 받습니다. 또한 이 함수는 경로와 참조 번호도 받습니다. [숫자/경로/참조 번호 아님?]은 입력과 같은 데이터 구조에서 불리언 값을 출력합니다.

[10진수?], [16진수?], [8진수?], [인쇄가능?], [화이트 스페이스?]는 스칼라 문자열 또는 숫자 입력, 문자열이나 복소수가 아닌 숫자의 클러스터, 문자열이나 복소수가 아닌 숫자의 배열 등을 받습니다. 출력은 입력과 같은 데이터 구조의 불리언 값으로 구성됩니다.

[빈 문자열/경로?] 함수는 경로, 스칼라 문자열, 문자열 클러스터, 문자열 배열 등을 받습니다. 출력은 입력과 같은 데이터 구조의 불리언 값으로 구성됩니다.

[같음?], [같지 않음?], [숫자/경로/참조 번호 아님], [빈 문자열/경로?], [선택] 함수는 경로나 참조 번호를 사용할 수 있습니다. 그러나 다른 비교 함수는 경로나 참조 번호를 입력으로 받지 않습니다.

배열과 클러스터를 받는 비교 함수는 일반적으로 같은 구조의 불리언 배열과 클러스터를 반환합니다. 이 함수가 단일 불리언 값을 반환하도록 하려는 경우, 함수에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 비교 모드≫집합 비교를 선택하여 집합을 비교합니다.

로그 함수의 다형성

로그 함수는 숫자 입력 데이터를 받습니다. 입력이 정수인 경우, 출력은 배정도 부동소수입니다. 정수가 아닌 경우, 출력은 입력과 같은 숫자형입니다.

로그 함수는 숫자, 숫자 배열, 숫자 클러스터, 숫자 클러스터 배열, 복소수 등을 다룹니다. 사용 가능한 입력 타입의 공식적인 반복된 정의는 다음과 같습니다:

숫자 타입 = 숫자 스칼라 OR 배열 [숫자 타입] OR 클러스터 [숫자 타입]

배열의 배열은 사용할 수 없습니다.

배열은 어떤 크기도 될 수 있으며 어떤 차원 수도 가질 수 있습니다. 클러스터는 어떤 원소 개수도 가질 수 있습니다. 출력 타입은 입력과 같은 숫자형입니다. 그리고 이 함수는 클러스터 또는 배열의 각 원소에 대하여 계산을 수행합니다. 두 개의 입력을 가진 로그 함수의 가능한 입력 타입 조합은 다음과 같습니다:

  • 동일한 경우―두 입력이 같은 구조이고, 출력도 입력과 같은 구조입니다.
  • 하나의 스칼라―한 개의 입력은 숫자 스칼라이고, 다른 입력은 숫자 배열이나 클러스터이며, 출력은 배열이나 클러스터입니다.