我想将一个对象分配给一个reg变量,但我不知道我是否可以这样做,如果是,我该怎么做呢,语法是什么?
例如,
我有一个班级Var
:
class Var {
constructor {Name values order} {} {
set mName $Name
set mValues $values
set mOrder $order
}
destructor {
}
public method GetName {} {
return $mName
}
public variable mOrder
public variable mName
public variable mValues
}
和一个对象:
Var::var_
我可以将一个对象var分配给reg变量吗?
类似的东西:
reg set var/var_ Var::var_
答案 0 :(得分:2)
您可以在任何变量中存储[incr Tcl]对象的名称。只需使用set
正常分配。
类变量可以通过限定名称引用: cls ::
var
如果要引用在其类方法之外可用的实例变量,则应在方法(或构造函数)中使用itcl::scope
来生成令牌。返回的令牌的格式没有很好地记录(并且可能会发生变化)。
尝试其中一些:
package req Itcl
itcl::class Var {
constructor {Name values order} {} {
set mName $Name
set mValues $values
set mOrder $order
}
destructor {}
public method GetName {} {
return $mName
}
public method GetNameVar {} {
return [itcl::scope mName]
}
public variable mOrder
public variable mName
public variable mValues
}
set foo [Var var_ a b c]
puts $foo
puts [$foo GetName]
append [$foo GetNameVar] [$foo GetName] "rdvark"
puts [var_ GetName]
puts [var_ GetNameVar]
在我的系统上,我得到了这个输出:
var_ a aardvark @itcl ::var_ ::Var::mName