【发布时间】:2021-02-22 16:41:18
【问题描述】:
来自 KX:https://code.kx.com/q/ref/value/ 说,当x 是一个列表时,value[x] 将作为 解析树 评估列表的结果。
第一季度。在下面的代码中,我理解 (A) 是一个解析树,定义如下。但是,为什么(B)也有效? ("+";3;4) 是一个有效的解析树吗?
q)value(+;3;4) / A
7
q)value("+";3;4) / B
7
q)eval(+;3;4) / C
7
q)eval("+";3;4) / D
'length
[0] eval("+";3;4)
任何其他解析树都采用列表的形式,其中第一项 是一个函数,其余项是它的参数。这些中的任何一个 项目可以是解析树。 https://code.kx.com/q/basics/parsetrees/
第二季度。在下面的代码中,value 未能返回我认为是有效解析树的结果,但eval 工作正常,递归地评估树。这是否意味着最上面的描述是错误的?
q)value(+;3;(+;4;5))
'type
[0] value(+;3;(+;4;5))
^
q)eval(+;3;(+;4;5))
12
第三季度。那么一般情况下,我们如何选择是使用value还是eval呢?
【问题讨论】:
标签: kdb