【问题标题】:Fully qualified context name (two dots)完全限定的上下文名称(两个点)
【发布时间】:2020-05-14 01:00:37
【问题描述】:

当引用带有两个点的全局上下文变量a 时,它们是什么意思(例如在https://code.kx.com/q/ref/key/ 中):

q)a:1
q)get `..a
1

为什么这个地址正好指向根命名空间变量a

更新

感谢@terrylynch 回复https://stackoverflow.com/a/61792207/689990,终于明白了!根命名空间的名称是

`.

因为命名空间.foo的名称是:

`.foo

所以只需添加 .a 即可

`..a
`.foo.a

作为结果。

【问题讨论】:

    标签: kdb


    【解决方案1】:

    这个页面解释得更好:https://code.kx.com/q4m3/12_Workspace_Organization/#121-namespaces

    通用字典(非统一值)和命名空间(本质上是通用字典)可以使用点符号来访问其值

    q)d:``a`b!(::;1;2)
    q)d
     | ::
    a| 1
    b| 2
    q)d.a
    1
    q)\d .foo
    q.foo)a:11
    q.foo)\d .
    q)
    q).foo.a
    11
    

    访问这些值的另一种方法是

    q)`.foo[`a]
    11
    q)get`.foo.a
    11
    

    但由于 `. 是根命名空间,因此遵循这一点

    q)a:100
    q)`.[`a]
    100
    q)get`..a
    100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2019-10-09
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多