删除以 "unconventional" 方式命名的变量

Delete variables named in an "unconventional" way

前段时间我正在审查一些遗留代码,我遇到了以下问题:开发人员创建了许多以点开头的变量(如 .variable1),语法保留用于定义命名空间。
当被问及该约定的使用时,他回答说,这本质上是一种在函数范围内创建全局变量的方法——在 Python 中,您将实现以下操作:

def define():
    global a
    a = 2

define()
print(a)

q 中,翻译成这样:

f1:{.b1:2;}
f2:{b1:2;}
f1[] / this creates a variable .b1, which you can use globally
f2[] / this creates a variable b1 within the scope of the function, not usable outside

虽然我的偏好是使用命名空间创建全局变量(类似于 f1:{.my_namespace.b1:2;}),但代码正在正常运行。

如果我想删除定义的以点开头的全局变量(.b1 在刚刚描述的情况下),问题就出现了,因为方法如

delete .b1 from `.

好像不行。我能找到的所有参考文献(如 this)都表明不能删除名称空间,这意味着这些未正确定义的变量将保留在那里。

明确地说,问题不在于如何从名称空间中删除变量,而是删除那些用作变量的名称空间——如果可能的话。

有什么想法吗?

根据您的问题,您希望从命名空间中删除变量。您可以通过 运行:

delete b1 from `.my_namespace

您粘贴的 link 中也有解释。 您不能做的实际上是删除对 my_namespace.

的引用

作为旁注,您还可以使用 set 关键字在根命名空间中全局设置变量:

{`var set 2}[]

这将使您不必创建一次性名称空间。