.Q.trp 和 bt 处理
.Q.trp and bt handling
我(在 .Q.fpn
中)看到了以下技术来解析和显示传递给 .Q.trp
函数的 bt
对象:
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)
构建不同于异常的东西吗?
我的猜测是,这是最近允许的特定信号以及添加的 .Q.trp/.Q.bt 功能。看起来它只适用于 (symbol;bt object)
或 (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
有一个非常具体的 format/shape 可以伪造,但它似乎是一个不必要的用例。
奖金奇数:
这个有效:
q)'("other";())
'other
[0] '("other";())
^
但我尝试过的其他事情出现了奇怪的错误:
q)'("other";(();()))
pl0
pl0
q)
q)'("other";"abc")
srr
我(在 .Q.fpn
中)看到了以下技术来解析和显示传递给 .Q.trp
函数的 bt
对象:
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)
构建不同于异常的东西吗?
我的猜测是,这是最近允许的特定信号以及添加的 .Q.trp/.Q.bt 功能。看起来它只适用于 (symbol;bt object)
或 (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
有一个非常具体的 format/shape 可以伪造,但它似乎是一个不必要的用例。
奖金奇数:
这个有效:
q)'("other";())
'other
[0] '("other";())
^
但我尝试过的其他事情出现了奇怪的错误:
q)'("other";(();()))
pl0
pl0
q)
q)'("other";"abc")
srr