1.table1:
([ID:`1`2`3]Name:`A`B`C;Client:`P`Q`S;ClientType:`QW`DS`WW;NameType:`jj`ll`oo;Basket:`QD`IO`LK;Sepal:5.1 4.5 23.5;Length:2 34 6;Species:`setosa`setosa`setosa)
2.编写一个简单的函数来选择table1数据
api:{[Params]
if [Params~();Params:()!()];
defaultCols:`ID`Name`Client!(`ID`Name`Client);
if[`extraCols in key Params;
defaultCols:defaultCols,Params[`extraCols]!Params `extraCols];
: ?[ select from table1;();0b;defaultCols];
}
3.test api[(enlist[`extraCols]!enlist(`Species`Length))]
ID Name Client Species Length
1 A B setosa 2
2 B Q setosa 34
3 C S setosa 6
当我使用一个参数进行测试时:api[(enlist[`extraCols]!enlist(`Species))]
但结果类型错误。在我的经验有限。你能帮我理解一下吗?感谢。
我希望得到以下结果以及如何更改我的api
ID Name Client Species
1 A B setosa
2 B Q setosa
3 C S setosa
答案 0 :(得分:1)
我认为type
错误来自if
条件中的陈述:
if[`extraCols in key Params;
defaultCols:defaultCols,Params[`extraCols]!Params `extraCols]
您创建字典Params[`extraCols]!Params `extraCols
如果Params`extraCols
中只有一个元素,那么在创建字典时需要注册这个元素以避免这种类型错误,即:
enlist[Params`extraCols]!enlist Params`extraCols
在函数中放置断点以检查参数的类型并给自己调试的机会也是值得的。然后,您应该能够看到Params`extraCols
是 atom `Species
(应该具有类型-11h
)而不是列表。