首页 文章

KDB,铸造,左操作数

提问于
浏览
2

刚开始使用KDB,有一些问题很难从Q for Mortals获得 .

说,这里http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumerations

Cast在左操作数中也是原子的 . 5 6 7h$42 结果:

42h
42
42j

我无法得到我们在这里做的事情:看起来我们投了5 6 7到42,但是什么是42?它代表一种类型吗?

3 回答

  • 1

    在这种情况下,您实际上将数字42转换为三种类型,5h / short,6h / int和7h / long,创建异构列表,键入0h .

    有关类型的更多信息,请访问:http://code.kx.com/q/ref/datatypes/

    下面的例子应该更清楚 .

    q)5 6 7h$42
    42h
    42i
    42
    
    q)`short`int`long$42
    42h
    42i
    42
    
    q)(5 6 7h$42) ~ (`short`int`long$42)
    1b
    
  • 5

    为了理解它,我们将它转换为备用版本 . 这将使它更容易理解 .

    Version1: Using Each-Left

    (5 6 7h) $\: 42
    

    输出:

    42h
    42i
    42
    

    每个左( \: )表示,对于左列表的每个值,调用右边的转换操作 .

    Version 2:Using Each (simple loop)

    {x $ 42} each 5 6 7h
    

    它只是循环遍历列表并在每次迭代时调用lambda函数 .

  • 1

    还有一种方法是使用铸造操作员( $ );将字符串转换为其他数据类型 . 使用此表单的最常见示例是将数据从CSV加载到kdb会话 .

    q)"HIJ"$\:string 42
    (42h;42;42j)
    

    要么

    q)-5 -6 -7h$\:string 42
    (42h;42;42j)
    

相关问题