如何将"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)
这样的功能化语句很快就会变得非常不可读!
希望对您有所帮助!
假设我有一个 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)
这样的功能化语句很快就会变得非常不可读!
希望对您有所帮助!