kdb-打印外部函数体时解析嵌套函数
在打印外部函数的定义时,我想打印任何嵌套函数的函数定义。例如:kdb-打印外部函数体时解析嵌套函数,kdb,Kdb,在打印外部函数的定义时,我想打印任何嵌套函数的函数定义。例如: g:{sin x} f:{cos g x} 当我打印f时,我得到{cos g x}但我想得到{cos{sin x}x} 感谢您的帮助据我所知,使用内置功能无法实现这一点 您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的: q)m:string[v]!string value each v:value[f][3] except ` 它创建了一个字典m: q)m ,"g"| "{sin x}" 当给定一个函数时,
g:{sin x}
f:{cos g x}
当我打印f
时,我得到{cos g x}
但我想得到{cos{sin x}x}
感谢您的帮助据我所知,使用内置功能无法实现这一点 您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的:
q)m:string[v]!string value each v:value[f][3] except `
它创建了一个字典m:
q)m
,"g"| "{sin x}"
当给定一个函数时,值
返回一个列表,其中包含(字节码;参数;局部变量(上下文;全局变量);常量[0];…;常量[n];定义)
但是,如果我们将符号
传递给值
,它将返回该符号的值(在本例中为函数定义)
然后,您可以使用ssr
将f
中的函数替换为字典m
中存储的函数定义
q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要确保您的函数是稳定的,并且能够适应不同的函数是非常困难的
有关value
的详细信息,请查看以下内容:
对于ssr
检查此链接:
据我所知,使用内置功能无法实现这一点 您可以尝试编写自己的函数来实现这一点,但最终会很痛苦。可能是这样的:
q)m:string[v]!string value each v:value[f][3] except `
它创建了一个字典m:
q)m
,"g"| "{sin x}"
当给定一个函数时,值
返回一个列表,其中包含(字节码;参数;局部变量(上下文;全局变量);常量[0];…;常量[n];定义)
但是,如果我们将符号
传递给值
,它将返回该符号的值(在本例中为函数定义)
然后,您可以使用ssr
将f
中的函数替换为字典m
中存储的函数定义
q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要确保您的函数是稳定的,并且能够适应不同的函数是非常困难的
有关value
的详细信息,请查看以下内容:
对于ssr
检查此链接:
注意-您的
值[f][9]
是特定于版本的。值仅返回v3.4及更早版本中的5项<代码>最后一个可能暂时有效,但可能会发生更改注意-您的值[f][9]
是特定于版本的。值仅返回v3.4及更早版本中的5项<代码>最后一个可能暂时有效,但可能会发生更改