bugfix> kdb > 投稿

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.テスト 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

テストに1つのParamsを使用した場合: api[(enlist[`extraCols]!enlist(`Species))] しかし、結果タイプのエラーです。これは私の限られた経験です。これを理解してください。ありがとう。

そして、結果とAPIを変更する方法を取得したい

ID Name  Client    Species
1    A     B       setosa
2    B     Q       setosa
3    C     S       setosa

回答 1 件
  • 私は type を想像します  エラーは if のステートメントから発生しています  調子:

    if[`extraCols in key Params;
     defaultCols:defaultCols,Params[`extraCols]!Params `extraCols]
    
    

    辞書 Params[`extraCols]!Params `extraCols を作成します

    Params`extraCols に要素が1つしかない場合  そのようなタイプエラーを避けるために、辞書を作成するときにこれを登録する必要があります、すなわち:

    enlist[Params`extraCols]!enlist Params`extraCols

    関数内にブレークポイントを配置して、引数のタイプを確認し、デバッグする機会を与えることも価値があります。その後、その Params`extraCols を確認できるはずです。  それは原子  `Species  (タイプは -11h である必要があります )リストではなく。

あなたの答え