1

我正在尝试以编程方式构造具有以下形式的功能选择调用的参数:

?[ `t; () ; groupBy; ()]

有问题的部分是groupBy,它应该是一本字典。

假设目标是以如下形式到达解析树:

parse "select by sym,month:`date$dt.month from t"

我开始构建by零件:

groupBy: enlist[`sym]!enlist(`sym)

然后我尝试附加monthgroup by 语句的一部分(注意周期性是参数化的):

per: `month / monthly periodicity
groupBy,: {enlist[x]!enlist[ $[x = `day; 
                               `dt; 
                               $[x=`month;
                                 ((parse "select by month:`date$dt.month from x")@3)@`month
                                 ;` sv (`dt,x)]
                               ]]
          }[per]

但是,这会引发type错误。出了什么问题?

4

1 回答 1

3

我认为它不喜欢复合作业

groupBy,:{...} 

尝试

groupBy:groupBy,{...}

不同之处在于,在第一种情况下,它尝试直接更改内存中的数据而不创建副本,而在第二种情况下,它在内存中创建数据的副本,然后将其重新分配给该变量。也许复合赋值仅在类型一致时才有效

于 2015-05-12T12:29:05.270 回答