如何将方法的返回值视为类类型-Itcl

时间:2018-08-10 07:54:26

标签: class tcl return-value itcl

假设我在Itcl中实现了以下代码。

package require Itcl

itcl::class A {
    constructor {} { puts $this }
    destructor {}
    public method Print {} { puts "ok" }
}

itcl::class B {
    constructor {} { }
    destructor {}
    public method returnA {} { return [A #auto] }
}

B b   ;# create an instance of class B
set obj [b returnA]   ; #assign return value to obj
$obj Print    ;# should treat obj as an A type and print ok

现在,出现以下错误:
无效的命令名称“ 0”     在执行时 “ $ obj打印”

我知道我需要将范围添加到变量或Print命令中,以调用与类A相关的Print方法。 但是我真的不知道如何。

我还阅读了以下帖子:

How to get a reference on the Itcl class member variable?

但是它没有说明如何将返回值视为特定的类类型变量

1 个答案:

答案 0 :(得分:1)

您必须限定类A尚未创建的实例的名称:

A [namespace current]::#auto

否则,将以非限定的方式返回创建的对象的名称(0a0,...),对于调用方的范围,无法将其解析为Tcl命令。 returnA