如何将K语言字典的值分配到当前作用域?求优雅实现方法
K语言字典变量提取的优雅实现方式
假设已有K语言字典:
x:(`a`b`c)!(1 2 3)
替代逐个提取的写法 a:xa; b:xb; c:xc`,可以用以下两类优雅实现:
一、解构赋值形式
- 按值的顺序直接解构到目标变量:
等价简化写法:字典后加(a;b;c):value x[]可直接返回值列表,因此也能写成:(a;b;c):x[] - 若变量名与字典键名完全匹配,可通过键名列表批量赋值:
`a`b`c set value x
二、函数式形式
- 遍历字典的键值对完成批量赋值:
这里{[k;v] @[.;k;:;v]} each' flip xflip x将字典转换为键列表与值列表组成的元组,each'(并行遍历)会逐个取对应键值对,再通过@函数修改当前命名空间,把值绑定到对应变量上。 - 更简洁的遍历键列表实现:
或者用运算符组合的紧凑写法:{ @[.;x;:;x`x] } each key x@[.;;:;x@] each key x
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

