1

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

1 回答 1

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_
一个
土豚
@itcl ::var_ ::Var::mName
于 2012-04-24T12:31:32.037 回答