Tcl我可以将一个对象分配给reg变量吗?

时间:2012-04-24 11:40:57

标签: tcl incr-tcl

我想将一个对象分配给一个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_

1 个答案:

答案 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