如何将方法中的 return 值视为 class 类型 - Itcl
How to treat a return value from method as a class type - 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 命令添加范围,以便调用与 class A 关联的 Print 方法。
但是我真的不知道怎么办。
我还阅读了以下内容post:
How to get a reference on the Itcl class member variable?
但它没有说明如何将 return 值视为特定的 class 类型变量
您必须限定尚未创建的 class 实例的名称 A
:
A [namespace current]::#auto
否则,创建对象的名称将以不合格的方式返回(0
、a0
、...),无法解析为范围内的 Tcl 命令returnA
.
的来电者
假设我在 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 命令添加范围,以便调用与 class A 关联的 Print 方法。 但是我真的不知道怎么办。
我还阅读了以下内容post:
How to get a reference on the Itcl class member variable?
但它没有说明如何将 return 值视为特定的 class 类型变量
您必须限定尚未创建的 class 实例的名称 A
:
A [namespace current]::#auto
否则,创建对象的名称将以不合格的方式返回(0
、a0
、...),无法解析为范围内的 Tcl 命令returnA
.