是否可以在q脚本中编写k代码?

Uts*_*Uts 2 kdb

我尝试从q函数调用k的count函数,但是它给出了错误。

{
  "k)"# 1 2 3 4 5 //~ count 1 2 3 4 5
 }[]
Run Code Online (Sandbox Code Playgroud)

因此,我有以下问题:
1.是否可以在q脚本中编写k代码?
2.如果是,那么我们如何在q脚本中编写k个代码?在q脚本/函数中使用k代码是否会使脚本/函数更高效和更优化?

小智 6

  1. Yes it is possible. I think what you are looking for is
{
 (#:) 1 2 3 4 5
}[]
Run Code Online (Sandbox Code Playgroud)

This will perform a count on the list

  1. In terms of speed, for functions like count the effect seems to be negligible.
q)\t:100000 {(#:) 1 2 3 4 5}[]
29
Run Code Online (Sandbox Code Playgroud)
q)\t:100000 {count 1 2 3 4 5}[]
25
Run Code Online (Sandbox Code Playgroud)

Hope this answers your question

  • @Utsav如果一个项目有1000行q代码,则在k个函数调用中保存几个字符不会显着改变封装。会大大改变占用空间的是更有效的编码,改进的设计以及代码的通用性/可重用性。此外,使用嵌入在q中的k代码会使您的项目更难以阅读,调试,维护和记录。在少数情况下,我认为使用aq项目中的k代码是合理的。至少那是我的看法 (3认同)