Q 언어-유형 캐스팅

일부 데이터의 데이터 유형을 한 유형에서 다른 유형으로 변경해야하는 경우가 종종 있습니다. 표준 캐스팅 기능은 "$"입니다.dyadic operator.

한 유형에서 다른 유형으로 캐스트하는 데 세 가지 접근 방식이 사용됩니다 (문자열 제외)-

  • 기호 이름으로 원하는 데이터 유형 지정
  • 문자로 원하는 데이터 유형 지정
  • 짧은 값으로 원하는 데이터 유형을 지정하십시오.

정수를 부동 소수점으로 캐스팅

정수를 부동으로 캐스팅하는 다음 예제에서 세 가지 캐스팅 방법은 모두 동일합니다.

q)a:9 18 27

q)$[`float;a]     / Specify desired data type by its symbol name, 1st way
9 18 27f

q)$["f";a]        / Specify desired data type by its character, 2nd way
9 18 27f

q)$[9h;a]         / Specify desired data type by its short value, 3rd way
9 18 27f

세 가지 작업이 모두 동일한 지 확인하십시오.

q)($[`float;a]~$["f";a]) and ($[`float;a] ~ $[9h;a])
1b

문자열을 기호로 캐스팅

문자열을 기호로 또는 그 반대로 캐스팅하는 것은 약간 다르게 작동합니다. 예를 들어 확인해 보겠습니다.

q)b: ("Hello";"World";"HelloWorld")    / define a list of strings

q)b
"Hello"
"World"
"HelloWorld"

q)c: `$b                               / this is how to cast strings to symbols

q)c                                    / Now c is a list of symbols
`Hello`World`HelloWorld

키워드`symbol 또는 11h '를 사용하여 문자열을 기호로 변환하려는 시도는 유형 오류와 함께 실패합니다.

q)b
"Hello"
"World"
"HelloWorld"

q)`symbol$b
'type

q)11h$b
'type

비 기호로 문자열 캐스팅

심볼 이외의 데이터 유형으로 문자열을 캐스팅하는 것은 다음과 같이 수행됩니다.

q)b:900               / b contain single atomic integer

q)c:string b          / convert this integer atom to string “900”

q)c
"900"

q)`int $ c            / converting string to integer will return the
                      / ASCII equivalent of the character “9”, “0” and
                      / “0” to produce the list of integer 57, 48 and
                      / 48.
57 48 48i

q)6h $ c              / Same as above
57 48 48i

q)"i" $ c             / Same a above
57 48 48i

q)"I" $ c
900i

따라서 전체 문자열 (문자 목록)을 데이터 유형의 단일 원자로 캐스트하려면 x 데이터 유형을 나타내는 대문자를 지정해야합니다. x 에 대한 첫 번째 인수로 $운영자. 데이터 유형을 지정하는 경우x 다른 방법으로 문자열의 각 문자에 캐스트가 적용됩니다.