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的其余部分如何精确地进行命令解析,以避免这种邪恶的情况。为了可读性,我删除了名称空间,这似乎就是问题所在。