2

我看到(在.Q.fpn)以下技术来解析和显示bt传递给.Q.trp函数的对象:

q)f:{x+1}
q).Q.trp[f;`a;{'(x;y)}]
'type
  [4]  f:{x+1}
           ^
  [3]  (.Q.trp)

  [2]  .Q.trp[f;`a;{'(x;y)}]
       ^
  [0]  .Q.trp[f;`a;{'(x;y)}]
       ^

'(x;y)看起来像是一个异常构建结构,但 Kx 文档说只有两种异常构建方式:从符号和字符串。看起来我们可以从(symbol; bt object).

那么建筑'(x;y)代表什么?

我们可以构建与异常不同的东西'(x;y)吗?

4

1 回答 1

3

我的猜测是,这是最近允许的特定信号以及 .Q.trp/.Q.bt 功能的添加。看起来它只适用于(symbol;bt object)or (string;bt object),其他任何东西都无法识别。

q).Q.trp[{1+x};`a;{'(x;y;1)}]
'stype

如果在没有信号的情况下返回,则可以存储输出:

q)r:.Q.trp[{1+x};`a;{(x;y)}]

并且这种类型的信号似乎在任何情况下都有效,而不仅仅是在.Q.trp中:

q)'("other";last r)
'other
  [2]  {1+x}
         ^
  [1]  (.Q.trp)

  [0]  r:.Q.trp[{1+x};`a;{(x;y)}]

我怀疑它last r有一种可以制造的非常特定的格式/形状,但它似乎是一个不必要的用例。

额外的怪事:

这有效:

q)'("other";())
'other
  [0]  '("other";())
        ^

但我尝试过的其他事情出现了奇怪的错误:

q)'("other";(();()))
pl0
pl0
q)
q)'("other";"abc")
srr
于 2020-12-15T15:06:47.310 回答