class - 如何将方法的返回值视为类类型 - 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
现在,我收到以下错误:
执行“$obj Print”时命令名称“0”无效
我知道我需要向我的变量或 Print 命令添加范围,以便调用与 A 类关联的 Print 方法。但我真的不知道如何。
我还阅读了以下帖子:
但它并没有说明如何将返回值视为特定的类类型变量
解决方案
您必须限定尚未创建的类实例的名称A
:
A [namespace current]::#auto
否则,所创建对象的名称以非限定方式返回(0
, a0
, ...),无法解析为returnA
.
推荐阅读
- python - Krispy_forms.exceptions.CrispyError: |as_crispy_field 传递了一个无效或不存在的字段
- r - 通过网站收集数据 在 R 中下拉数据
- laravel - Laravel 关系管理多列,
- magento - 如何在 Magento 2.3.2 的结帐过程中删除付款方式步骤
- python - 在创建通过迭代列值从另一个获取值的新数据框时会创建不必要的重复
- javascript - 如何创建一个带有查看更多选项的下拉按钮,并且单击切换不应该在反应 js 中发生?
- php - 使用 PHP 更新 MySQL 表中的数据
- angular - 上传在数据库上插入值,将文件存储在文件夹中但不播放文件
- ios - 使用 RxSwift 将多个 UITextField 绑定到类道具
- c# - 如何使用 SqlDataReader 在 C# 中格式化日期