首页 > 解决方案 > 以字符串为参数的函数

问题描述

在 kdb 中,我想要一个将字符串作为参数的函数。

myfunc: {[strParam]
    .... 
}

但是,当我尝试调用该函数时。

q) myfunc["test"]

它抱怨length错误。该函数似乎"test"传递了 4 个 char 参数。如何使函数期望一个字符串?

标签: kdb

解决方案


kdb 中的字符串被定义为字符列表,因此使用它们的函数必须能够处理这个问题。

q)count "test"
4

您还可以使用符号而不是使用`symbol$"test". 符号是原子的且宽度固定,因此可用作字典或表中的键。字符串的某些函数仍然适用于符号,例如

q)upper `test
`TEST

而列表操作将不起作用,您必须string `test在使用这些操作之前将其转换回字符串。

当抛出长度错误并进入调试模式时,如带有两个括号的 q 提示所示q)),您可以使用这些函数.z.ex来显示失败的函数并.z.ey查看失败的参数来缩小引发错误的部分。


推荐阅读