Q Dili - Tip Döküm

Genellikle bazı verilerin veri türünü bir türden diğerine değiştirmek gerekir. Standart çevrim işlevi "$" dırdyadic operator.

Bir türden diğerine çevirmek için üç yaklaşım kullanılır (dizge hariç) -

  • İstenen veri türünü sembol adına göre belirtin
  • İstenilen veri tipini karakterine göre belirtin
  • Kısa değeri ile istenen veri tipini belirtin.

Tamsayıları Kayanlara Çevirme

Aşağıdaki tam sayıları float'lara çevirme örneğinde, üç farklı çevrim yönteminin tümü eşdeğerdir -

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

Üç işlemin de eşdeğer olup olmadığını kontrol edin,

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

Dizeleri Sembollere Çevirme

Dizeyi sembollere çevirmek ve bunun tersi biraz farklı çalışır. Bir örnekle kontrol edelim -

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

'Sembolü veya 11h' anahtar sözcüklerini kullanarak dizeleri sembollere çevirmeye çalışmak, tür hatasıyla başarısız olur -

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

q)`symbol$b
'type

q)11h$b
'type

Dizeleri Sembol Olmayanlara Çevirme

Dizeleri simgeden farklı bir veri türüne çevirmek şu şekilde gerçekleştirilir -

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

Dolayısıyla, tüm bir dizeyi (karakter listesi) tek bir veri türü atomuna çevirmek için x veri türünü temsil eden büyük harfi belirtmemizi gerektirir x ilk argüman olarak $Şebeke. Veri türünü belirtirsenizx başka herhangi bir şekilde, dizinin her karakterine atamanın uygulanmasıyla sonuçlanır.