Создание пустого списка в KDB без типа данных - PullRequest
0 голосов
/ 21 ноября 2018

Я уже некоторое время изучаю KDB, и теперь мне нужна ваша помощь в какой-то момент.Мы можем создать пустой список, используя следующий синтаксис: mylistname: 0 #

Пример:

q)myEmptySymbolList:0#`
q)myEmptySymbolList
`symbol$()
q)type myEmptySymbolList
11h

q)myEmptyFloatList:0#0n
q)myEmptyFloatList
`float$()
q)type myEmptyFloatList
9h

q)myEmptyDateList:0#0Nd
q)myEmptyDateList
`date$()
q)type myEmptyDateList
14h

Но когда мы не указываем dataType, он создает список типа функции проекции, как показано ниже.

q)myEmptyTypeList:0#
q)myEmptyTypeList
#[0]
q)type myEmptyTypeList
104h

Я немного озадачен, почему он создает список типов функций проекций?Если бы я хотел создать список других типов функций, как мы можем это сделать (например, https://code.kx.com/wiki/Reference/Datatypes#Function_Types) и где при разработке мы можем использовать список функций?

Спасибо, Ваджиндар.

1 Ответ

0 голосов
/ 21 ноября 2018

В kdb взятие нулевого счета скалярного значения или значения атома (например, 0#1) - это быстрый путь к созданию пустого списка.

Может быть полезно использовать этот ярлык, но для общих целей вы можете начать с общего списка: () Затем вы можете создать этот список, используя $ и символ, символ или шорт:

q)`int$()
`int$()
q)"i"$()
`int$()
q)6h$()
`int$()

Все это приводит к пустому целочисленному списку.

В заключительной части выше, # - это двоичная функция - вы фактически не создаете здесь список проекций, когда высделайте 0#, вместо этого вы создаете одну проекцию.В kdb нет типизированных списков функций:

q)type ({x+1};{x+2})
0h

Они всегда отображаются в виде смешанного списка (тип 0), поэтому вы просто видите (положительный) тип проекции, которую вы создали вэтот случай (104).

Здесь обновлен список типов:

https://code.kx.com/q/ref/datatypes/

И информация о приведении здесь:

https://code.kx.com/q/ref/casting/#cast

...