如何在单个查询中更改名称空间?

How to change a namespace in a single query?

如果我尝试就地切换命名空间(例如通过 qcon)以在命名空间中准确定义函数(我想 get[`f][3;0] 将准确给出定义它的命名空间) ,我得到了空洞的结果——似乎没有发生命名空间切换:

\d .
system"d .ns1"; f1:{x+y}; get[.ns1.f1][3;0]~`

但是:

\d .
system"d .ns1"; // notice the only difference is the newline
f1:{x+y}; get[.ns1.f1][3;0]~`ns1

难道是3.6 32bit版本的bug?或功能? 如果它是一项功能,那么如何在单个 qcon 查询中切换到新的命名空间?

在执行代码行之前在上下文中评估代码行。因此,第一个示例中的 f1 定义是在命名空间切换发生之前的上下文中计算的。