假设我有一个表的列,其数据类型是字符数组。我想传入一个函数select where子句,其中列在给定字符串的列表中。但是,我不能简单地使用(in; `col; myList)
作为理由。相反,我需要做相同的:
max col like/: myList
有效地给出相同的结果。但是,我试图将其置于功能形式
(max; (like/:; `col; myList))
我收到了类型错误。关于如何使这项工作的任何想法?
答案 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))