【问题标题】:Empty list creation in kdb with no datatype在没有数据类型的 kdb 中创建空列表
【发布时间】:2018-11-21 17:33:04
【问题描述】:

我学习 KDB 已经有一段时间了,现在需要您的帮助。 我们可以使用以下语法创建空列表: 我的列表名称: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)以及在开发中我们可以在哪里使用函数列表?

谢谢, 瓦金达。

【问题讨论】:

    标签: list kdb


    【解决方案1】:

    在 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

    【讨论】:

    • 感谢瑞恩的回答。我会尝试探索这方面的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多