问题标签 [incr-tcl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
class - 使用 Incr Tcl 的类对象的层次结构
我正在尝试实现类/子类对象的层次结构,例如:
这里的要点是能够在每个主类中声明具有相同名称的不同子类(并使其变量独立)。
(注意:我在这里谈论的是在执行期间创建的类对象的层次结构,而不是不同类的继承。)
对 Tcl 特有的一些高级方面(命名空间、范围......)不太熟悉,我尝试了以下代码:
在创建第二次出现时会产生错误SubClassB
:
我可能错过了关于类名称空间的一点,因为我不明白变量SubClassesList
如何具有两个不同的范围,但“相同”的名称空间/名称(来自调试输出)。
我试图在该newSubClass
方法中创建一个新的命名空间,但它没有解决问题和/或添加一些无法解决的变量命名空间错误......
任何想法执行这样的事情?
PS:出于与现有环境的兼容性原因,我使用 [incr Tcl] 在我的项目中实现类,但如果有人认为其他 OO 实现会更好/更容易,请告诉我......
编辑 :
通过使用namespace eval
+在与对象名称对应的新命名空间namespace inscope
中创建对象找到了解决方案:subClass
mainClass
tcl - 调用 $this 与不调用的区别
$this
使用Tcl8.5,在方法内部调用和不调用有区别吗?例如:
tcl - 更改 iwidgets::combobox 选定值 tcl/tk
如何更改iwidgets::combobox
tcl/tk 中的选定值?
我尝试了以下方法,但它不起作用。( set ::check_tech "bbb"
)
tcl - ::itcl::delete 抛出错误“无效的命令名称”
我正在使用 itcl delete 命令删除对象和类。但是,tcl 解释器说“无效的命令名”删除“。这是部分代码片段。
谢谢,博普
arrays - TCL 错误:无法设置“::streamID(1,10,1)”:变量不是数组
我已经阅读了线程,Cant read variable, isnt array,我认为可能以某种方式相关,但我不知道如何。在以下 TCL 片段中,测试了一个三维数组 ::stream 并读取了一个值。该数组包含一个标量 ID 值。片段中的最后一行创建了一个错误,上面写着
我将此解释为意味着 $nextId 不是标量,它不能放入标量的 3 维数组中。我对错误的解释不正确吗?我非常有信心该数组包含标量值,所以我开始认为这里可能存在一些数据安全问题。