Class 如何将方法的返回值视为类类型-Itcl
假设我在Itcl中实现了以下代码Class 如何将方法的返回值视为类类型-Itcl,class,tcl,return-value,itcl,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 #
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方法。 但我真的不知道怎么做 我还读了以下帖子:
但是它没有说明如何将返回值视为特定的类类型变量您必须限定尚未创建的类实例的名称
a
:
A [namespace current]::#auto
否则,所创建对象的名称将以非限定方式返回(
0
,a0
,…),这无法解析为调用方范围内的Tcl命令returnA
请参见另一个问题:您为什么要在Itcl上进行培训?为什么不使用tcl8.6自带的内置OO系统TclOO
。顺便说一句,更新的ITcl版本是建立在TclOO之上的,所以没有什么好处,特别是如果你开始使用Tcl(并且你没有被锁定在ITcl中)。此外,上面的代码片段不是一个MVE。。。请。请关注这个问题。MRCALVIN,我需要提供一个TCL -C++ API,我读到使用ITCL是最好的解决方案。您是否建议改用TclOO?我可以在哪里阅读?你的信息来源是什么?Itcl和C++?最好联系comp.lang.tcl,获取有关应用程序技术选择的反馈。