问题标签 [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.

0 投票
1 回答
204 浏览

functional-programming - 使用构造函数中的方法扩展 Itcl 对象

Itcl 中是否有可能使用构造函数中的方法动态扩展类?

我有一些动态生成的函数......

它们看起来像这样:

现在我有一个文件,其中包含可能的属性列表:

该文件获得来源。但直到现在我还在添加全局函数。将这些函数作为方法添加到 Itcl 对象会更好。

一点背景资料:

这用于生成一种抽象语言,用户可以通过编写这些属性轻松添加这些属性,而无需任何其他关键字。这里使用函数提供了很多我不想错过的优势。

0 投票
1 回答
117 浏览

file - 我们可以将 itcl 类对象写入外部文件吗?

我有一个简单的类对象,在 itcl 中有一组特定的数据。

有没有一种方法可以像在 C 中那样将 itcl 对象直接写入外部文件?

就像是,

0 投票
1 回答
717 浏览

tcl - Itcl 配置方法:如何在配置脚本中使用公共变量?

在 Itcl 中使用公共变量的配置脚本的正确方法是什么?

我的意思是,这就是我想要做的:

至少,这就是我在 C++ 中编写 setter 方法的方式。首先,检查参数,如果有效,则将其分配给私有变量。如果参数无效,则保持对象状态不变。

现在,我决定使用 Itcl 的configure机制重写代码,而不是为我拥有的每个内部状态变量编写 getter 和 setter 方法。(我喜欢以标准方式做事。)

这种方法的问题是即使参数无效,变量也会被赋值!并且没有(简单的)方法可以将其恢复为之前的值。

使用 Itcl 配置脚本的正确方法是什么?我知道它们是为 Tk 小部件设计的,作为在值更改时更新 GUI 的一种方式,但是 Tk 小部件也需要验证它们的参数,不是吗?

0 投票
1 回答
80 浏览

properties - itcl 什么是读属性?

我想控制对 Itcl 公共变量的读取访问。我可以使用以下方法进行写访问:

configbody 定义了调用 config 时会发生什么$obj configure -filename foo.txt:但是我如何控制读取过程中发生的事情呢?想象一下,我想做的不仅仅是在读取过程中查找一个值。

我想继续使用标准的 Itcl 模式,即使用 cget/configure 向用户公开这些。

这就是我的问题。但是,让我描述一下我真正想做的事情,然后你告诉我是否应该做一些完全不同的事情:)

我喜欢python类。我喜欢我可以创建一个变量并从实例外部读取/写入它。稍后,当我想变得花哨时,我将创建方法(使用@property@property.setter)来自定义读/写,而用户不会看到 API 更改。我正在尝试在这里做同样的事情。

我的示例代码还建议了我想做的其他事情。实际上,文件名内部存储在字典中。我不想将整个字典暴露给用户,但我确实希望他们能够更改该字典中的值。所以,真正的“文件名”只是一个存根。我不想要一个叫做那个的公共变量。相反,我想使用 cget 和 configure 来读取和写入“事物”,我可能会选择创建一个简单的公共变量,或者可能希望定义一个查找它的过程。

PS:我确信我可以创建一个采用一个或两个参数的方法。如果一个,它的读取和两个它的写入。我认为这不是要走的路,因为我认为您不能使用 cget/configure 方法。

0 投票
1 回答
38 浏览

tcl - itcl configbody 的适当返回值

我想从configbody返回,但不能明确地这样做而不导致变量不被设置。

我想帮助理解我所看到的行为。请考虑以下代码(使用Itcl 3.4):

当我返回空字符串时,文件名未设置为新值。如果我不返回而只是让 proc 失败,则文件名确实会改变。您可以通过将上述代码中的 1 更改为 0 来看到这一点。

我怀疑它与以下陈述有关:

当脚本中没有返回时,它的值是脚本中最后一个命令的值。

如果有人能解释这种行为以及我应该如何返回,我将不胜感激。

0 投票
2 回答
76 浏览

tcl - 如何重命名 itcl::ensemble

有没有办法重命名 itcl::ensemble?如果不能,可以用其他合奏替换 itcl::ensemble 而不会产生任何副作用?

谢谢

0 投票
1 回答
215 浏览

variables - itcl中未初始化和初始化的类变量之间的区别

我使用了以下两个版本的类变量:

显然,唯一明显的区别是前者没有初始值。当我使用我的访问器时,它被定义为:

首先设置然后取回该值,我将获得两种不同的行为,具体取决于我用来声明变量的上述版本。在第一个未初始化的情况下,访问器总是会抛出:

但是使用第二个声明,它将按预期工作并返回初始值,或者如果已更改,则返回该新值。

注意1:通过我的访问器设置值总是有效的。

将报告

或者

取决于我是否有初始化版本。

注意2:访问器是单行的,因为它是在一个proc中生成的,它使用concat和uplevel来生成一种“默认”访问器。

注意 3:我的 tcl 版本是 8.5 我的 itcl 版本是 3.4 两者都不能更改

问题:我现在有一个可行的解决方案,但想了解其中的区别。一个好的解释将回答我的问题,一个好的文档的指针也很好,但显然是一个链接:

甚至更一般的都不行。

0 投票
1 回答
144 浏览

sorting - lsort -unique - 对象的命令

我有一个矩形列表,如果有重叠的,我需要报告错误。
所以,我决定使用lsort -command对我的列表进行排序,然后比较新旧列表的长度。如果它们不相等,则存在重叠的矩形。

这是完成工作的一段代码:

似乎lsort -unique -command工作不正常或我做错了什么。
我怎样才能解决这个问题?或者也许有更好的解决方案?

提前致谢!

0 投票
2 回答
53 浏览

tcl - 原生 OO 中 itcl::find 的任何替代品?

在本机 OO 中是否有 itc::find 的替代品。

我需要删除特定命名空间中的所有类我的代码运行如下:

我如何在本机 OO 中执行此操作?

0 投票
1 回答
28 浏览

linux - itcl tabnotebook 在 Windows 上缺少标签

我有一个在 Linux 上运行良好的 itcl/tk 应用程序(大部分也可以在 Windows 上运行)。有一个框架,我在其中打包了一个 iwidgets::scrolledframe,并在其中添加了一个 iwidgets::tabnotebook 两个选项卡。

在 Linux 上从来没有问题,但在 Windows(使用 Win7)上,通常缺少第二个选项卡。有时在 Windows 上退出并重新调用应用程序,它会出现,但通常它永远不会出现。我尝试重新组织代码,插入“更新空闲任务”,但无济于事。

不确定是否有其他技巧,或者需要深入研究 itcl/tk 安装的代码,或者是否可能是 PC 机器硬件问题。

任何尝试的想法或建议将不胜感激。