KDB/k:创建表变量的函数形式

KDB/k:创建表变量的函数形式,kdb,k,Kdb,K,是否有等同于以下内容的函数形式 trades:([]date:`date$();time:`time$();sym:`symbol$();price:`real$();size:`int$(); cond:`char$()) 假设函数名为“ct” 交易:ct[字段名;类型] ct:{[fields;types] flip fields!types$\:()} 例如: q)ct[`date`time`sym`price`size`cond;`date`time`symbol`float`lon

是否有等同于以下内容的函数形式

trades:([]date:`date$();time:`time$();sym:`symbol$();price:`real$();size:`int$(); cond:`char$())
假设函数名为“ct”

交易:ct[字段名;类型]

ct:{[fields;types] flip fields!types$\:()}
例如:

q)ct[`date`time`sym`price`size`cond;`date`time`symbol`float`long`symbol]
    date time sym price size cond
    -----------------------------
还将使用以下类型的字符形式:

q)ct[`date`time`sym`price`size`cond;"dtsfjs"]
    date time sym price size cond
    -----------------------------

这种方法有一个问题。它可以创建正常语法中不可能的重复列。对于exf[
d
d;“sd”]将创建两个“d”列,而常规语法将另一列重命名为“d1”。要解决此问题,可以在函数中插入重复的检查或重命名逻辑。另一个选项是使用并仅从输入创建不同的列,如:{flip(distinct x)#x!y$\:()}。这将考虑重复列的第一个数据类型。可能值得一提的是,字符串列必须使用后一种方法生成,以“*”作为数据类型,例如CT[COL1'COL2;“J*”]。