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}"
当给定一个函数时,value
返回一个包含(bytecode;parameters;locals(context;globals);constants[0];...;constants[n];definition)
但是,如果我们将 a 传递symbol
给value
它,则返回该符号的值(或本例中的函数定义)。
然后,您可以使用存储在字典中的函数定义ssr
来替换函数。f
m
q)ssr/[last value[f];key m;value m]
"{cos {sin x} x}"
但是要保证你的功能稳定并能适应不同的功能是非常困难的。
有关如何value
查看此处的更多详细信息:https ://code.kx.com/q/ref/metadata/#value
ssr
检查此链接:
https : //code.kx.com/q/ref/strings/#ssr
推荐阅读
- javascript - 把和数组变成一个对象
- c++ - 布尔函数返回意外值
- c++ - 显式默认的移动构造函数使结构不可轻易复制
- django - 无法在视图中显示两个表单 - Django
- css - 如何更改 YouTube iframe 的 CSS 样式
- javascript - 在 VueJs 中应用交叉点观察器时的错误
- reactjs - 无法重定向到找不到页面(React Hooks)
- excel - PowerBI:如何使用 DAX/Measure 计算/将时间转换为百分比
- scala - 如何改进 Scala 中的这种广度优先搜索,使其更符合 FP?
- google-home - 如何强制我的 Google Home 下载最新版本的本地应用