问题标签 [itcl]
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.
functional-programming - 使用构造函数中的方法扩展 Itcl 对象
Itcl 中是否有可能使用构造函数中的方法动态扩展类?
我有一些动态生成的函数......
它们看起来像这样:
现在我有一个文件,其中包含可能的属性列表:
该文件获得来源。但直到现在我还在添加全局函数。将这些函数作为方法添加到 Itcl 对象会更好。
一点背景资料:
这用于生成一种抽象语言,用户可以通过编写这些属性轻松添加这些属性,而无需任何其他关键字。这里使用函数提供了很多我不想错过的优势。
file - 我们可以将 itcl 类对象写入外部文件吗?
我有一个简单的类对象,在 itcl 中有一组特定的数据。
有没有一种方法可以像在 C 中那样将 itcl 对象直接写入外部文件?
就像是,
tcl - Itcl 配置方法:如何在配置脚本中使用公共变量?
在 Itcl 中使用公共变量的配置脚本的正确方法是什么?
我的意思是,这就是我想要做的:
至少,这就是我在 C++ 中编写 setter 方法的方式。首先,检查参数,如果有效,则将其分配给私有变量。如果参数无效,则保持对象状态不变。
现在,我决定使用 Itcl 的configure
机制重写代码,而不是为我拥有的每个内部状态变量编写 getter 和 setter 方法。(我喜欢以标准方式做事。)
这种方法的问题是即使参数无效,变量也会被赋值!并且没有(简单的)方法可以将其恢复为之前的值。
使用 Itcl 配置脚本的正确方法是什么?我知道它们是为 Tk 小部件设计的,作为在值更改时更新 GUI 的一种方式,但是 Tk 小部件也需要验证它们的参数,不是吗?
properties - itcl 什么是读属性?
我想控制对 Itcl 公共变量的读取访问。我可以使用以下方法进行写访问:
configbody 定义了调用 config 时会发生什么$obj configure -filename foo.txt
:但是我如何控制读取过程中发生的事情呢?想象一下,我想做的不仅仅是在读取过程中查找一个值。
我想继续使用标准的 Itcl 模式,即使用 cget/configure 向用户公开这些。
这就是我的问题。但是,让我描述一下我真正想做的事情,然后你告诉我是否应该做一些完全不同的事情:)
我喜欢python类。我喜欢我可以创建一个变量并从实例外部读取/写入它。稍后,当我想变得花哨时,我将创建方法(使用@property
和@property.setter
)来自定义读/写,而用户不会看到 API 更改。我正在尝试在这里做同样的事情。
我的示例代码还建议了我想做的其他事情。实际上,文件名内部存储在字典中。我不想将整个字典暴露给用户,但我确实希望他们能够更改该字典中的值。所以,真正的“文件名”只是一个存根。我不想要一个叫做那个的公共变量。相反,我想使用 cget 和 configure 来读取和写入“事物”,我可能会选择创建一个简单的公共变量,或者可能希望定义一个查找它的过程。
PS:我确信我可以创建一个采用一个或两个参数的方法。如果一个,它的读取和两个它的写入。我认为这不是要走的路,因为我认为您不能使用 cget/configure 方法。
tcl - itcl configbody 的适当返回值
我想从configbody返回,但不能明确地这样做而不导致变量不被设置。
我想帮助理解我所看到的行为。请考虑以下代码(使用Itcl 3.4):
当我返回空字符串时,文件名未设置为新值。如果我不返回而只是让 proc 失败,则文件名确实会改变。您可以通过将上述代码中的 1 更改为 0 来看到这一点。
我怀疑它与以下陈述有关:
当脚本中没有返回时,它的值是脚本中最后一个命令的值。
如果有人能解释这种行为以及我应该如何返回,我将不胜感激。
tcl - 如何重命名 itcl::ensemble
有没有办法重命名 itcl::ensemble?如果不能,可以用其他合奏替换 itcl::ensemble 而不会产生任何副作用?
谢谢
variables - itcl中未初始化和初始化的类变量之间的区别
我使用了以下两个版本的类变量:
和
显然,唯一明显的区别是前者没有初始值。当我使用我的访问器时,它被定义为:
首先设置然后取回该值,我将获得两种不同的行为,具体取决于我用来声明变量的上述版本。在第一个未初始化的情况下,访问器总是会抛出:
但是使用第二个声明,它将按预期工作并返回初始值,或者如果已更改,则返回该新值。
注意1:通过我的访问器设置值总是有效的。
将报告
或者
取决于我是否有初始化版本。
注意2:访问器是单行的,因为它是在一个proc中生成的,它使用concat和uplevel来生成一种“默认”访问器。
注意 3:我的 tcl 版本是 8.5 我的 itcl 版本是 3.4 两者都不能更改
问题:我现在有一个可行的解决方案,但想了解其中的区别。一个好的解释将回答我的问题,一个好的文档的指针也很好,但显然是一个链接:
甚至更一般的都不行。
sorting - lsort -unique - 对象的命令
我有一个矩形列表,如果有重叠的,我需要报告错误。
所以,我决定使用lsort -command
对我的列表进行排序,然后比较新旧列表的长度。如果它们不相等,则存在重叠的矩形。
这是完成工作的一段代码:
似乎lsort -unique -command
工作不正常或我做错了什么。
我怎样才能解决这个问题?或者也许有更好的解决方案?
提前致谢!
tcl - 原生 OO 中 itcl::find 的任何替代品?
在本机 OO 中是否有 itc::find 的替代品。
我需要删除特定命名空间中的所有类我的代码运行如下:
我如何在本机 OO 中执行此操作?
linux - itcl tabnotebook 在 Windows 上缺少标签
我有一个在 Linux 上运行良好的 itcl/tk 应用程序(大部分也可以在 Windows 上运行)。有一个框架,我在其中打包了一个 iwidgets::scrolledframe,并在其中添加了一个 iwidgets::tabnotebook 两个选项卡。
在 Linux 上从来没有问题,但在 Windows(使用 Win7)上,通常缺少第二个选项卡。有时在 Windows 上退出并重新调用应用程序,它会出现,但通常它永远不会出现。我尝试重新组织代码,插入“更新空闲任务”,但无济于事。
不确定是否有其他技巧,或者需要深入研究 itcl/tk 安装的代码,或者是否可能是 PC 机器硬件问题。
任何尝试的想法或建议将不胜感激。