首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将方法的返回值视为类类型- Itcl

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

Stack Overflow用户
提问于 2018-08-10 07:54:25
回答 1查看 97关注 0票数 0

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

代码语言:javascript
复制
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

现在,我得到以下错误:

执行"$obj打印“时命令名"0”无效

我知道我需要向变量或Print命令中添加作用域,以便调用与类A相关联的Print方法,但我不知道如何调用。

我还读了以下文章:

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

但它并没有说明如何将返回值作为特定的类类型变量来处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 15:47:18

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

代码语言:javascript
复制
A [namespace current]::#auto

否则,所创建对象的名称将以不限定的方式返回(0a0、.),不能将其解析为returnA调用方作用域的Tcl命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51781674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档