Kdbplus-q-language-type-casting
提供:Dev Guides
Q言語-型キャスト
多くの場合、一部のデータのデータ型をある型から別の型に変更する必要があります。 標準のキャスト関数は「$」* 2項演算子*です。
1つのタイプから別のタイプにキャストするために3つのアプローチが使用されます(文字列を除く)-
- シンボル名で目的のデータ型を指定します
- 文字で目的のデータ型を指定します
- 短い値で目的のデータ型を指定します。
整数から浮動小数点数へのキャスト
整数を浮動小数点数にキャストする次の例では、3つの異なるキャスト方法はすべて同等です-
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
3つの操作すべてが同等であるかどうかを確認し、
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 のデータ型を指定すると、文字列の各文字にキャストが適用されます。