有没有一种方法可以停止在Tcl / itcl中重写功能?

时间:2018-12-03 11:38:43

标签: tcl

我有以下用例...

itcl::class A {

    public method Foo {} {}
}

itcl::class B {
    inherit A

    public method Foo {} {} // Should not be allowed

}

在Tcl / itcl中有没有办法停止功能重写?

1 个答案:

答案 0 :(得分:0)

我完全不相信itcl可以做到。 8.7中的TclOO可以 sort 来做到这一点(通过将超类上的方法设为私有),但是您也将无法从其他类中调用它。如果子类可以看到它,那么它也可以覆盖它。一般原则是,如果用户代码希望引起麻烦,则可以;这会在过程中造成麻烦,但这就是语言的工作方式:毕竟,您还可以覆盖内置命令,例如setifproc,这可能会导致更多的恶作剧。

请记住,在Tcl中,方法的可见性不是安全机制。安全机制总是与解释器联系在一起。