函数在 kdb/q 中没有 return 值
Function does not return value in kdb/q
我在kdb/q中有一个函数声明:
q)func_demo:{[time1;time2] select from t where time within(time1 time2)}
时间的数据类型是 v
。并且查询完美无缺。
我将两次时间传递给函数:
q)func_demo[13:00:00 13:00:02]
但是控制台中没有显示 table,它给了我这样的信息:
{[time1;time2] select from tt where tp_time within(time1 time2)}[13:00:00 13:00:02]
有人可以给我一些提示如何处理这个问题吗?是因为我传入参数的时候没有把13:00:00
转成'v'吗?
非常感谢!
你的函数有两个参数 time1 和 time2
在你的行中 q)func_demo[13:00:00 13:00:02]
你只传递函数一个参数,它是一个时间列表。
你的意思是通过q)func_demo[13:00:00;13:00:02]
返回的其实是函数投影。下面代码解释
q)f:{x+y}
q)f[2;2]
4
q)f[2 2]
{x+y}[2 2]
q)proj:f[2 2]
q)proj 10 100
12 102
q)proj
{x+y}[2 2]
您需要按照@emc211 的建议传递参数;但是您使用的函数有问题 (time1 time2)
{[time1;time2] select from tt where tp_time within(time1 time2)}[13:00:00;13:00:02]
应该是(time1;time2)
-time1
后的分号(;
)
{[time1;time2] select from tt where tp_time within(time1; time2)}[13:00:00;13:00:02]
解释:
time1:13:00:00
time2:13:00:02
这类似于 time1@time2
q)(time1 time2)
'type
[0] (time1 time2)
要使用 time1
和 time2
作为列表:
q)(time1;time2)
13:00:00 13:00:02
如果您使用的是实际值,则无需为相似类型的元素指定 ;
。
(time1;time2)~(13:00:00 13:00:02)
1b
我在kdb/q中有一个函数声明:
q)func_demo:{[time1;time2] select from t where time within(time1 time2)}
时间的数据类型是 v
。并且查询完美无缺。
我将两次时间传递给函数:
q)func_demo[13:00:00 13:00:02]
但是控制台中没有显示 table,它给了我这样的信息:
{[time1;time2] select from tt where tp_time within(time1 time2)}[13:00:00 13:00:02]
有人可以给我一些提示如何处理这个问题吗?是因为我传入参数的时候没有把13:00:00
转成'v'吗?
非常感谢!
你的函数有两个参数 time1 和 time2
在你的行中 q)func_demo[13:00:00 13:00:02]
你只传递函数一个参数,它是一个时间列表。
你的意思是通过q)func_demo[13:00:00;13:00:02]
返回的其实是函数投影。下面代码解释
q)f:{x+y}
q)f[2;2]
4
q)f[2 2]
{x+y}[2 2]
q)proj:f[2 2]
q)proj 10 100
12 102
q)proj
{x+y}[2 2]
您需要按照@emc211 的建议传递参数;但是您使用的函数有问题 (time1 time2)
{[time1;time2] select from tt where tp_time within(time1 time2)}[13:00:00;13:00:02]
应该是(time1;time2)
-time1
;
)
{[time1;time2] select from tt where tp_time within(time1; time2)}[13:00:00;13:00:02]
解释:
time1:13:00:00
time2:13:00:02
这类似于 time1@time2
q)(time1 time2)
'type
[0] (time1 time2)
要使用 time1
和 time2
作为列表:
q)(time1;time2)
13:00:00 13:00:02
如果您使用的是实际值,则无需为相似类型的元素指定 ;
。
(time1;time2)~(13:00:00 13:00:02)
1b