【发布时间】:2014-07-25 14:07:54
【问题描述】:
我在使用 TclOO 继承类时偶然发现了变量范围。 不重复声明,下面的成员变量nCrumbs对继承的类是不可见的。
有没有办法避免复制超类中的所有变量声明?
(我通读了所有 OO 文档,特别是 oo::define 和 oo::object,还有未导出的东西,用谷歌搜索它。有很多概念可以解决各种问题,我迷路了。 我正在寻找使继承类尽可能简单的东西。不过,超类中可能有任何花哨的复杂代码。)
任何帮助将不胜感激,谢谢。
oo::class create toaster {
variable nCrumbs; #declaration
constructor {} {
set nCrumbs 0; #definition
}
method toast {nSlices} {
if {$nCrumbs > 50} {
error "== FIRE! FIRE! =="
}
set nCrumbs [expr $nCrumbs+4*$nSlices]
}
method clean {} {
set nCrumbs 0
}
}
oo::class create smartToaster {
superclass toaster; #inherit
variable nCrumbs; #<======= have to declare again
method toast {nSlices} {
if {$nCrumbs > 40} {
my clean
}
next $nSlices; #call superclass method
}
}
set clsToaster [smartToaster new]
$clsToaster toast 2
【问题讨论】:
标签: tcl scope superclass