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 のデータ型を指定すると、文字列の各文字にキャストが適用されます。