代码:
package require TclOO
oo::class create Supe {
variable cape boots
constructor {} {
puts -nonewline "Supe: "
puts [info class variables [self class]]
}
}
oo::class create Clark {
superclass Supe
variable glasses suit
constructor {} {
puts -nonewline "Clark: "
puts [info class variables [self class]]
next
}
}
set hero [Clark new]
输出:
Clark: glasses suit
Supe: cape boots
是否可以从 Supe 的构造函数中获取 Clark 的成员变量列表而不将它们作为参数传递给 Supe?
最终,目标是从 dict 参数动态设置派生类变量:
foreach {varName} [info class variables [self class]] {
variable $varName [dict get $args $varName]
}
如果上面的代码可以用在超类的构造函数中,就可以避免把它放在每个派生类的构造函数中。