如何将"like each"转化为函数形式?

How to convert "like each" into a functional form?

假设我有一个 table 的列,其数据类型是字符数组。我想传递一个功能性的 select where 子句,其中该列位于给定字符串的列表中。但是,由于某些原因,我不能简单地使用 (in; `col; myList) 。相反,我需要做相当于:

max col like/: myList

这实际上给出了相同的结果。但是,我试图把它放在函数形式中

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

而且我遇到了类型错误。关于如何使这项工作有任何想法吗?

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

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

处理此问题的一个好技巧是在要函数化的 select 语句的字符串上使用 parse。例如:

q)parse"select from t where max col like/: myList"
?
`t
,,(max;((/:;like);`col;`myList))
0b
()

或者在您的具体情况下,您需要结果列表的第三个元素(where 子句):

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

我什至认为在您的实际代码中使用此模式可能是个好主意,因为像 max ((/:;like);`col;`myList) 这样的功能化语句很快就会变得非常不可读!

希望对您有所帮助!