如何转换"像每个"成功能形式?

时间:2017-05-26 18:13:31

标签: kdb

假设我有一个表的列,其数据类型是字符数组。我想传入一个函数select where子句,其中列在给定字符串的列表中。但是,我不能简单地使用(in; `col; myList)作为理由。相反,我需要做相同的:

max col like/: myList

有效地给出相同的结果。但是,我试图将其置于功能形式

(max; (like/:; `col; myList))

我收到了类型错误。关于如何使这项工作的任何想法?

3 个答案:

答案 0 :(得分:2)

处理此问题时的一个很好的技巧是在要功能化的select语句的字符串上使用q)parse"select from t where max col like/: myList" ? `t ,,(max;((/:;like);`col;`myList)) 0b () 。例如:

q)(parse"select from t where max col like/: myList")2
max ((/:;like);`col;`myList)

或者特别是在你的情况下你想要结果列表的第3个元素(where子句):

max ((/:;like);`col;`myList)

我甚至认为在实际代码中使用这种模式可能是一个好主意,因为像for(i=1, j=0;i<10;i++) { j += i; } System.out.println(i); 这样的功能化语句很快就会变得难以理解!

希望有所帮助!

答案 1 :(得分:1)

应该是:(max;((/:;like);`col;`mylist))

答案 2 :(得分:1)

(any; ((/:;like); `col; enlist,myList))