原来D里也可以象C#那样写事件
betty_betty2008
2009-01-02
俺试着对dwt 的Button 重载了+= 和 -=操作符,使之分别与addSelectionListener 和 removeSelectionListener匹配:
class TButton:Button { public this(Shell shell,int style) { super(shell,style); } public void opAddAssign(SelectionListener slner) { this.addSelectionListener(slner); } public void opSubAssign(SelectionListener slner) { this.removeSelectionListener(slner); } } SelectionListener 派生类: class ClickedListener:SelectionListener { public void widgetSelected(SelectionEvent e) { //user code here } public void widgetDefaultSelected(SelectionEvent e) { //leave blank; } 之后在源文件中实例化几个TButton,就可以委派事件了: ClickedListener btnOKClick=new ClickedListener; TButton btnOK=new TButton(...); btnOK+=btnOKClick; ... btnOK-=btnOKClick; ... 请指点这个思路对不对头。谢了!! |
|
Colorful
2009-01-02
关于这个,我觉得我写的这个更像 C# 中的事件。
自我感觉也比 DWT 更帅,呵呵。 详细的可以参考: http://code.google.com/p/d-phoenix/source/browse/trunk/source/system/Event.d 单元测试里有它的用法。 |
|
betty_betty2008
2009-01-02
Colorful 写道 关于这个,我觉得我写的这个更像 C# 中的事件。
自我感觉也比 DWT 更帅,呵呵。 详细的可以参考: http://code.google.com/p/d-phoenix/source/browse/trunk/source/system/Event.d 单元测试里有它的用法。 老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。 |
|
hurd
2009-01-02
感觉这个tango.core.Signal 做事件也不错。
|
|
Colorful
2009-01-02
betty_betty2008 写道 老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。
写中文注释的原因在于能够第一时间就可以出中文 API 文档(只要编译的时候加上 -D 就可以了)。 再就是我讨厌写英文文档。因为我要花时间考虑该咋写,呵呵。 如果老外想看英文文档,可以,等有心人把中文翻译成英文再说吧。 我是无能为力了。 时间太紧张。出英文文档暂时还没有列入计划中。 我目前正在对 d-phoenix 增加国际化的支持。 |
|
hurd
2009-01-02
ColorFul兄请教一个问题, 像socket handle,sqlite 句柄, com对象,这些东西都是一个指向外部资源的引用或者id, 在程序运行的时候转化为整数保存的话受GC影响不? GC应该不会移动外部数据吧?
|
|
Colorful
2009-01-02
hurd 写道 ColorFul兄请教一个问题, 像socket handle,sqlite 句柄, com对象,这些东西都是一个指向外部资源的引用或者id, 在程序运行的时候转化为整数保存的话受GC影响不? GC应该不会移动外部数据吧?
不会。因为这些资源是系统分配的,并没有在 GC Heap 上分配。 GC 在回收资源时不会去管它们。 这些资源,注意一个原则,谁分配,谁释放。 一定要记得释放。 |
|
ideage
2009-01-03
Colorful 写道 betty_betty2008 写道 老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。
写中文注释的原因在于能够第一时间就可以出中文 API 文档(只要编译的时候加上 -D 就可以了)。 再就是我讨厌写英文文档。因为我要花时间考虑该咋写,呵呵。 强烈赞成Colorful,感觉真的要写,也要写中文的。 以前写了好多不通的英文注释,日子久了,结果搞的同事都不明白,自己也糊涂了,还是母语好。 |
|
tomqyp
2009-01-04
ideage 写道 强烈赞成Colorful,感觉真的要写,也要写中文的。 以前写了好多不通的英文注释,日子久了,结果搞的同事都不明白,自己也糊涂了,还是母语好。 对对对,这个情况还很普遍 |
|
hqs7636
2009-01-04
betty_betty2008 写道 老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。 大概后脑勺长包了 前两天过年,俺憋了很久 |