关于元编程表达式计算结果的疑问

.dos 文件中做如下测试:
已知:
1 + 1 * sum(3*20)
2022.10.04 11:48:23.124  DolphinDB
long(61)
(3 ms)

1 + 1 * sum 3 * 20
022.10.04 11:48:38.112  DolphinDB
long(61)
(2 ms)

expr(1,+,1,*,sum,3,*,20)
2022.10.04 11:49:12.558  DolphinDB
code('< 1 + 1 * sum 3 * 20 >')
(2 ms)

v = < 1 + 1 * sum 3 * 20 >
v
2022.10.04 11:53:23.102  DolphinDB
code('< 1 + 1 * sum(3 * 20) >')
(2 ms)

v.eval()
2022.10.04 11:53:55.039 DolphinDB
long(61)
(2 ms)

可是:
expr(1,+,1,*,sum,3,*,20).eval()
2022.10.04 11:49:52.451 DolphinDB
long(80)
(2 ms)

为什么是long(80)而不是long(61)呢?


请先 登录 后评论

1 个回答

wale

谢谢反馈,等假期结束后,我让开发工程师确认一下。

看上去是运算次序的不一致引起,下面这样是可以的:

expr(1,+,1,*,sum,<3*20>).eval()
请先 登录 后评论
  • 1 关注
  • 0 收藏,711 浏览
  • 羊了个羊 提出于 2022-10-04 11:57

相似问题