TC官方合作论坛

 找回密码
 立即注册
查看: 5969|回复: 20

[学习心得] 浅谈TC命名空间

[复制链接]
发表于 2012-5-14 08:56:29 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本文谈谈我对TC命名空间的理解。希望官方能够给出更权威、详细的说明。(以下内容均属个人理解,望指正)
一、命名空间即对象?
TC的帮助文档里几乎没有涉及对象的概念,当我们写一个脚本的时候可能想不到任何跟面向对象相关的东西。但是TC中的对象是存在的,见下例。
创建项目test3,再创建另外一个命名空间myObject。代码如下:
  1. #include "myObject.t"
  2. namespace test3

  3. function thread1(name)
  4.         myObject.setName(name)
  5.         help.sleep(2000)
  6.         return true
  7. endfunction

  8. function thread2(param)
  9.         help.sleep(2000)
  10.         help.messagebox(myObject.getName())
  11.         return true
  12. endfunction

  13. function start_click()
  14.         thread.beginthread("test3.thread1","MyName")
  15.         thread.beginthread("test3.thread2","")
  16.         return true
  17. endfunction

  18. function exit_click()
  19.         help.exit()

  20.         return true
  21. endfunction

  22. endnamespace
复制代码
  1. namespace myObject

  2. name

  3. function setName(n)
  4.         name = n
  5.         return true
  6. endfunction

  7. function getName()
  8.         return name
  9. endfunction

  10. endnamespace
复制代码
test3中有两个线程,线程thread1用来设置命名空间myObjectName属性,线程thread2用来获取myObjectName属性,程序运行的结果thread2得到的值永远与thread1设置的属性保持一致。很多人已经知道这一特性,这条特性是非常重要也非常有用的,这也是线程间传递数据的一种很有效的方法。
关于命名空间另外一个有趣的特性是,当我们双击点开项目生成的exe时,自定义命名空间中的属性和方法便可以使用了,直到我们关闭exe文件,自定义命名空间中的属性和方法才会被销毁。
命名空间具有如此特性的原因便是:当程序执行时,自定义的命名空间会作为全局对象(代表窗口程序的对象)的一个内部对象而初始化,自定义命名空间的属性就是该对象的属性,自定义命名空间的方法就是该对象的方法,任何对自定义命名空间的操作都会反映在该对象上。这个对象是唯一的,而且只有在全局对象被销毁时,与全局对象一同销毁。
二、命名空间与TC
使用TC的朋友肯定会跟TC库打交道,TC库分为两个大类,一个是功能类库,包括对键鼠、窗口等功能类方法的操作,另一个是控件操作类库,包括对标签、编辑框等控件的操作。无论是使用功能类库中的help.messagebox(“Msg”)弹出窗口,还是使用控件类库中的edit.gettext(“editName”)获得文本框内容,这些方法的调用形式与自定义命名空间中的函数可以说一模一样:命名空间名.方法名(参数列表),参考前面例子中的myObject.setName(name)方法。无论是在项目的主空间,还是在自定义命名空间中,都可以使用help.messagebox(“Msg”)edit.gettext(“editName”)这样的方法,说明helpedit这类TC内置功能,像自定义空间一样,储存在全局对象中,表示功能的一部分调用系统api,另一部分通过关联,操作界面上的控件。我们甚至可以将TC内部的各个类库与自定义命名空间看作是等价的。
可以想象,如果TC想要新增加一种超链接控件,除了界面上增加超链接控件的设计部分外,还在程序的启动过程中,加入对应超链接操作的“命名空间”。如果想要为picture(图片框)控件增加一个设置大小的方法,则需要在picture命名空间中加入实现设置图片大小的方法。

(本来画了一个TC程序的生命周期图的,但是编辑控件有问题,无法上传图片,维护好了会补发上来。)
回复

使用道具 举报

发表于 2012-5-14 09:10:03 | 显示全部楼层
写的很详细,不错,又学到了。
回复 支持 反对

使用道具 举报

发表于 2012-5-14 09:24:57 | 显示全部楼层
来看下。。  很详细的说。
回复 支持 反对

使用道具 举报

发表于 2012-5-14 10:21:37 | 显示全部楼层
楼上用心了,感谢楼主。
回复 支持 反对

使用道具 举报

发表于 2012-5-14 11:10:01 | 显示全部楼层
顶贴
回复 支持 反对

使用道具 举报

发表于 2012-5-14 11:37:49 | 显示全部楼层
学习了 。 楼上分析的很好哦!
回复 支持 反对

使用道具 举报

发表于 2012-5-14 11:59:41 | 显示全部楼层
看不太懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-14 12:13:01 | 显示全部楼层
回复 7楼ltsi001的帖子

接近底层的东西,确实不容易理解。
我相信能够熟练使用TC之后再来看这篇文章,会有很大帮助。
回复 支持 反对

使用道具 举报

发表于 2012-5-14 14:06:06 | 显示全部楼层
这样楼主的分享,我慢慢去理解
回复 支持 反对

使用道具 举报

发表于 2012-8-9 14:07:15 | 显示全部楼层
TC程序的生命周期图啥时候补上哦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-19 13:46 , Processed in 0.051360 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表