Tcl/NX将对象作为参数传递

Tcl/NX将对象作为参数传递,tcl,Tcl,我试图将一个对象传递给一个将其设置为新对象属性的方法。这是我目前的代码: nx::Class create Node {} nx::Class create Edge { :property node1:::Node :property node2:::Node } nx::Class create Graph { :variable edges {} :public method add {newNode1 new

我试图将一个对象传递给一个将其设置为新对象属性的方法。这是我目前的代码:

   nx::Class create Node {}


   nx::Class create Edge {
        :property node1:::Node
        :property node2:::Node
   }

   nx::Class create Graph {
    :variable edges {}

    :public method add {newNode1 newNode2} {
        ::Edge create newEdge -node1 $newNode1 -node2 $newNode2 
       }
    }
我无法将实际对象传递到此add方法

    ::Node create n1
    ::Node create n2 


    ::Graph create G
    G add n1 n2

告诉我边创建需要一个对象,但得到了“n1”。当我尝试用$n1和$n2去引用n1和n2时,我得到“不能读取::n1没有这样的变量”。我不确定什么时候该取消引用,或者我做错了什么。

看起来像是某种命令解决问题。(带有
$
的版本肯定是错误的。)尝试使用
::n1
而不是
n1
。此外,如果这就是错误所在,则一定要在NX中将其报告为错误。如果在本地找不到全局名称空间中的对象,它应该解析这些对象;这就是Tcl的其余部分如何精确地进行命令解析,以避免这种邪恶的情况。为了可读性,我删除了名称空间,这似乎就是问题所在。看起来像是某种命令解析问题。(带有
$
的版本肯定是错误的。)尝试使用
::n1
而不是
n1
。此外,如果这就是错误所在,则一定要在NX中将其报告为错误。如果在本地找不到全局名称空间中的对象,它应该解析这些对象;这就是Tcl的其余部分如何精确地进行命令解析,以避免这种邪恶的情况。为了可读性,我删除了名称空间,这似乎就是问题所在。